免费的Linux命令行工具可将SVG转换为PDF和/或某些常用位图格式?


17

是否有免费的Linux命令行工具将SVG转换为PDF和/或某些常用位图格式(例如PNG)?

linux  svg 

2
mogrify -format pdf -- *.svg
伊罗吉尔格(Yrogirg)

Answers:


25

当您要光栅化(像素化)的输出是您想要的(或至少可以接受)时,Imagemagick很棒,但否则是一个不好的选择,因为它有效地将要转换的任何内容的光栅化版本嵌入到pdf中。svg / pdf的全部要点是可以对其进行矢量化处理,从而使其尺寸更小,同时在任何分辨率下均保持平滑。

因此,我绝对建议您使用InkscapeCarioSVG。后者具有多个命令行实用程序正是用于此目的(svg2pdfsvg2pssvg2png)。唯一的困难是它基本上只是一个python鸡蛋,因此,如果您没有设置python环境并且不足够(或不太在意)设置一个python环境,则该选项为no走。我尝试了一下,但是在设置必需项时遇到了问题libcairo(不是我尝试得太努力了)。

Inkscape很棒,但是如果您只想快速执行一点命令即可为您完成所有工作,那么cli就会有些笨拙。我整理了一些小脚本来为我完成所有这些工作:

svg2pdf

#!/bin/bash

for i in $@; do
  inkscape --without-gui --export-pdf="$(basename $i .svg).pdf" $i
done

svg2png

#!/bin/bash

for i in $@; do
  inkscape --without-gui --export-png="$(basename $i .svg).png" $i
done

将第一个放进去,将第二个~/bin/svg2pdf放进去~/bin/svg2pngchmod +x在它们两个上运行以使其可执行,然后开始繁荣!您可以通过快捷简便的方式完成这些常用操作,而无需考虑或记住Inkscape的CLI的工作方式。(很明显,您需要先安装Inkscape才能起作用)


我只是做了一个快速的性能测试与ImageMagick的和Inkscape的与代10 PDF文件和ImageMagick的更快的5.77倍。 time for i in {1..10}; do time inkscape --without-gui -f "drawing.svg" --export-pdf="drawing$i.pdf"; done;真实0m2.192s time for i in {1..10}; do convert drawing.svg drawing$i$i$i.pdf; done;真实0m0.381s

6
它可能更快,但是您失去了图形的矢量性质,因此它可能也大了10倍(尽管如果我错了,我希望您纠正我)。之所以需要更长的时间,是因为它正在执行实际的矢量操作,这比光栅化(基本上等同于渲染)要复杂得多。
2012年

7

Image MagickInkscape也有命令行工具。


3
convert到目前为止赢。它甚至能够与您甚至不知道存在的深奥格式进行转换,并向您应用它们所需要的更多效果。
2011年

3
只是为了向不熟悉的读者阐明,convert是ImageMagick的命令行工具。
艾瑞卡(Erika)

2
还有一点需要澄清:如果使用convert,则将从矢量切换为栅格,并失去缩放图像的能力。在我的书中,最重要的是inkscape。这取决于您的需求。
nsheff 2014年


0

据我所知,有一种方法可以通过cmd操作Inkscape-我已经使用了类似的方法从我庞大的SVG集合中批量导出PNG缩略图。由于Inkscape还支持通过Cairo导出PDF,因此也应该可以导出PDF。我会在一些Inkscape论坛上询问。:-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.