有没有办法使用“rsvg-convert”将多页 SVG 或多 SVG 文件转换为单个多页 PDF?
我正在使用命令:
/usr/bin/rsvg-convert -f pdf -o out.pdf in.svg
有没有办法使用“rsvg-convert”将多页 SVG 或多 SVG 文件转换为单个多页 PDF?
我正在使用命令:
/usr/bin/rsvg-convert -f pdf -o out.pdf in.svg
您可以在转换为 pdf 时提供 .svg 文件的列表。
rsvg-convert -f pdf -o out.pdf file1.svg file2.svg file3.svg
或者,您可以将文件夹中的所有 .svg 文件转换为 1 个 pdf,如下所示:
rsvg-convert -f pdf -o out.pdf *.svg
rsvg-convert
完成多 SVG 到单 PDF 的任务,请参阅@holger-will 的回答。但是,它将所有PDF 页面的大小调整为与第一个 SVG 文件相同的大小(无论第二个、第三个等是否更大)。这不适用于组合具有不同高度和宽度的各种 SVG。
一个替代方案 -- svgstopdf
-- 可在基于 Debian 的系统上使用https://github.com/pimpreneil/svgtopdf并在https://github.com/flueterflam/svgtopdf移植到 Windows
语法也类似:
svgstopdf file1.svg file2.svg (...) out.pdf
或者
svgstopdf *.svg out.pdf
使用的好处svgstopdf
是每个 PDF 页面的大小都是对应的 SVG 图像的大小。您无需将所有 SVG 调整为统一的宽度或高度!如果第一个较小,后续的 SVG 也不会被剪裁。
尽管 OP 要求rsvg-convert
,但请注意,此方法完成相同的任务。发现此问题的未来用户可能有兴趣了解没有rsvg-convert
(截至 2018 年 8 月)固有限制的替代方案。这在https://github.com/brion/librsvg/blob/master/rsvg-convert.crsvg-convert.c
的第 244-245 行非常清楚:librsvg
/* in the case of multi-page output, all subsequent SVGs are scaled to the first's size */
rsvg_handle_set_size_callback (rsvg, rsvg_cairo_size_callback, &dimensions, NULL);
虽然它在评论中说“缩放”,但我使用 using 的测试rsvg-convert
表明后续 PDF 页面的大小与第一个相同。此外,后续的 SVG不会调整大小以适应 PDF 页面,而是被裁剪。所以“缩放”过程是指 PDF 页面而不是 SVG 图像。
这方面的一个例子是采用两个 SVG 文件: 128px x 128 px - https://en.wikipedia.org/wiki/File:Blue_sphere.svg 288px x 288px - https://www.shareicon.net/download/ 2015/10/03/111553_wifi.svg
使用rsvg-convert -f pdf -o out.pdf Blue_sphere.svg 111553_wifi.svg
,生成的 PDF 如下所示:
显然,这不是我们想要的结果。相反,使用svgstopdf.exe Blue_sphere.svg wifi.svg out2.pdf
结果: