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

Don*_*man 4 linux pdf svg pdf-generation

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

我正在使用命令:

 /usr/bin/rsvg-convert -f pdf -o out.pdf in.svg
Run Code Online (Sandbox Code Playgroud)

Hol*_*ill 5

转换为pdf时,您可以提供.svg文件列表.

rsvg-convert -f pdf -o out.pdf file1.svg file2.svg file3.svg
Run Code Online (Sandbox Code Playgroud)

或者你可以将文件夹中的所有.svg文件转换为1 pdf,如下所示:

rsvg-convert -f pdf -o out.pdf *.svg
Run Code Online (Sandbox Code Playgroud)


wha*_*sit 5

rsvg-convert完成多 SVG 到单 PDF 的任务,请参阅 @holger-will 的回答。但是,它会将所有PDF 页面的大小调整为与第一个 SVG 文件相同的大小(无论第二个、第三个等是否更大)。这不适合组合具有不同高度和宽度的各种 SVG。

另一种- svgstopdf-可在基于Debian的系统在https://github.com/pimpreneil/svgstopdf,并在移植到Windows https://github.com/flueterflam/svgstopdf

语法也类似:

svgstopdf file1.svg file2.svg (...) out.pdf
Run Code Online (Sandbox Code Playgroud)

或者

svgstopdf *.svg out.pdf
Run Code Online (Sandbox Code Playgroud)

使用的好处svgstopdf是,每个PDF页面恰好对应SVG图像的大小。您不需要将所有 SVG 的大小调整为统一的宽度或高度!如果第一个 SVG 较小,则后续的 SVG 也不会被剪裁。

尽管 OP 要求rsvg-convert,但请注意,此方法完成相同的任务。发现此问题的未来用户可能有兴趣了解没有固有限制的替代方案rsvg-convert(截至 2018 年 8 月)。这是上线的244-245很清楚rsvg-convert.clibrsvg 看到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);
Run Code Online (Sandbox Code Playgroud)

虽然它在评论中说“缩放”,但我对 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 提取