6

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

我正在使用命令:

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

2 回答 2

7

您可以在转换为 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
于 2015-09-17T14:46:42.937 回答
5

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 如下所示:

(第 1 页) 第一个 PDF 页面 (rsvg-convert) - 由 Adob​​e Acrobat 提取

(第2页) 第二个 PDF 页面 (rsvg-convert) - 由 Adob​​e Acrobat 提取

显然,这不是我们想要的结果。相反,使用svgstopdf.exe Blue_sphere.svg wifi.svg out2.pdf结果:

(第 1 页) 第一个 PDF 页面 (svgstopdf) - 由 Adob​​e Acrobat 提取

(第2页) 第二个 PDF 页面 (svgstopdf) - 由 Adob​​e Acrobat 提取

于 2018-08-05T01:41:07.593 回答