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

18 linux svg

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

met*_*ous 26

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

所以,我绝对会推荐使用InkscapeCarioSVG。后者有几个专门用于此目的的命令行实用程序(svg2pdfsvg2pssvg2png)。唯一的问题是它基本上只是一个 python 蛋,所以如果你没有设置 python 环境并且不够精明(或不够关心)来设置一个,那么这个选项是不走。我自己尝试过,但是在设置所需的内容时遇到了问题libcairo(不是我尝试得太努力了)。

Inkscape 很棒,但是如果您只想通过一个快速的小命令为您完成所有工作,则 cli 有点笨拙。我整理了几个小脚本来为我处理这一切:

svg2pdf

#!/bin/bash

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

svg2png

#!/bin/bash

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

将第一个放入~/bin/svg2pdf,将第二个放入~/bin/svg2pngchmod +x在它们上运行以使其可执行,然后繁荣!对于这些经常需要的操作,您有一个快速简便的快捷方式,不需要您思考或记住 Inkscape 的 CLI 是如何工作的。(显然你需要安装 Inkscape 才能使用)

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

Eri*_*ika 7

Image Magick,而Inkscape也有命令行工具。

  • 到目前为止,`convert` 获胜。它甚至能够与您甚至不知道存在的深奥格式相互转换,并为它们应用更多您永远需要的效果。 (3认同)
  • 只是为了向不熟悉的读者澄清,`convert` 是 ImageMagick 的命令行工具。 (3认同)
  • 还有一个说明:如果您使用转换,您将从矢量切换到光栅并失去缩放图像的能力。在我的书中,胜出的是inkscape。它只取决于你需要什么。 (2认同)

Cir*_*郝海东 6

墨景

转PDF:

inkscape -A a.pdf a.svg
Run Code Online (Sandbox Code Playgroud)

到 PNG:

inkscape -e a.png a.svg
Run Code Online (Sandbox Code Playgroud)

找到man inkscape以及如何在命令行模式下使用 Inkscape