有没有办法使用“rsvg-convert”将多页SVG或多SVG文件转换为单页多页PDF?
我正在使用命令:
/usr/bin/rsvg-convert -f pdf -o out.pdf in.svg
答案 0 :(得分:5)
转换为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
答案 1 :(得分:2)
rsvg-convert
完成了多SVG到单PDF的任务see @holger-will's answer。但是,它将所有 PDF页面的大小调整为与第一个SVG文件相同的大小(无论第二个,第三个等较大)。这不适用于组合各种具有不同高度和宽度的SVG。
备用方案svgstopdf
在基于https://github.com/pimpreneil/svgstopdf的基于Debian的系统上可用,并通过https://github.com/flueterflam/svgstopdf移植到Windows上
语法也相似:
svgstopdf file1.svg file2.svg (...) out.pdf
或
svgstopdf *.svg out.pdf
使用svgstopdf
的好处在于,每个PDF页面恰好是相应的SVG图像的大小。您无需将所有SVG调整为统一的宽度或高度!如果第一个较小的SVG也不会被裁剪。
尽管OP要求提供rsvg-convert
,但请注意,此方法可以完成相同的任务。将来发现此问题的用户可能有兴趣了解替代方法,而不受rsvg-convert
的固有限制(截至2018年8月)。在rsvg-convert.c
see https://github.com/brion/librsvg/blob/master/rsvg-convert.c的librsvg
的第244-245行中这很清楚:
/* 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);
尽管注释中显示了“已缩放”,但我使用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
会导致: