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

6

有没有一种方法可以使用"rsvg-convert"将多页SVG或多个SVG文件转换为一个多页PDF?

我正在使用以下命令:

 /usr/bin/rsvg-convert -f pdf -o out.pdf in.svg
2个回答

8

在转换为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

5
rsvg-convert可以完成将多个SVG转换成单个PDF的任务 参见@holger-will的回答。然而,它会将所有PDF页面的大小调整为第一个SVG文件的大小(无论第二个、第三个等是否更大)。这不适用于组合具有不同高度和宽度的各种SVG。
另一种选择是在基于Debian的系统上使用svgstopdf,可在https://github.com/pimpreneil/svgstopdf上获得,并在Windows上移植到https://github.com/flueterflam/svgstopdf
语法也类似:
svgstopdf file1.svg file2.svg (...) out.pdf

或者

svgstopdf *.svg out.pdf

使用svgstopdf的好处在于每个PDF页面都恰好与相应的SVG图像大小相同。您无需将所有SVG调整为统一的宽度或高度!如果第一个SVG较小,则后续的SVG也不会被裁剪。
尽管OP要求使用rsvg-convert,但请注意,此方法可以完成相同的任务。未来发现此问题的用户可能会对没有rsvg-convert固有限制的替代方案感兴趣(截至2018年8月)。这在librsvgrsvg-convert.c的244-245行非常清楚参见https://github.com/brion/librsvg/blob/master/rsvg-convert.c
/* 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 如下:
(page 1) First PDF page (rsvg-convert) - extracted by Adobe Acrobat

(第2页) 由Adobe Acrobat提取的第二个PDF页面(rsvg-convert)

显然,这不是期望的结果。相反,使用svgstopdf.exe Blue_sphere.svg wifi.svg out2.pdf会得到以下结果:

(第1页) 由Adobe Acrobat提取的第一页PDF页面(svgstopdf)

(第2页) 由Adobe Acrobat提取的第二页PDF页面(svgstopdf)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接