使用rsvg-convert可以将多页或多文件SVG转换为多页PDF吗?

时间:2013-07-29 20:58:12

标签: linux pdf svg pdf-generation

有没有办法使用“rsvg-convert”将多页SVG或多SVG文件转换为单页多页PDF?

我正在使用命令:

 /usr/bin/rsvg-convert -f pdf -o out.pdf in.svg

2 个答案:

答案 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.clibrsvg的第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如下所示:

(第1页) First PDF page (rsvg-convert) - extracted by Adobe Acrobat

(第2页) Second PDF page (rsvg-convert) - extracted by Adobe Acrobat

显然,这不是理想的结果。相反,使用svgstopdf.exe Blue_sphere.svg wifi.svg out2.pdf会导致:

(第1页) First PDF page (svgstopdf) - extracted by Adobe Acrobat

(第2页) Second PDF page (svgstopdf) - extracted by Adobe Acrobat