如何从PDF文件中提取向量?


51

我有一个带有矢量图像的PDF文件。(我是从互联网上下载的,所以没有任何原件。)

我希望提取这些向量,以便可以将它们叠加在其他图像上。在印刷媒体或网站上使用它们。

如何从PDF文件中提取特定矢量?

也许有没有什么软件可以从PDF文件中提取向量?(最好是免费的。)


@slhck:我的意思是矢量图形。我确实使用了Inkscape,并且按预期工作。您能否将您的评论作为答案,以便我将其标记为已接受?
Devdatta Tengshe 2011年

Answers:


49

您可以使用Inkscape,它是一个免费的,开放源代码和跨平台的矢量图形应用程序。它将允许您导入PDF文件并选择嵌入的矢量。然后,您可以编辑它们并根据需要进行处理。

有关详细文档,请访问Inkscape网站。

请注意,在Linux上,它需要X11。还有本机Windows版本。

或者,您可能想要试用Adobe Illustrator(付费软件)。


2
在Linux上,它需要X11-还有一个本机Windows版本(我刚好用它从PDF中提取矢量图形)。
Mark Leighton Fisher

23

尽管Inkscape是一种很棒的方法,但对于缺少X11的用户,您也可以在命令行上使用poppler-utils将PDF的各个页面提取为SVG格式。例如,仅提取第30页:

$ pdftocairo -f 30 -l 30 -svg  somehugemanual.pdf  myextractedpage.svg

然后,您可以使用自己喜欢的矢量编辑器(我的是Inkscape)将图像与文本隔离。

或者,如果您是硬核命令行用户,则可以提取到EPS(封装的脚本)并用于sed隐藏所有文本(恰好在pdftocairo的BT和ET行之间)。这是如何做:

$ pdftocairo -f 30 -l 30 -eps  manual.pdf  - | sed '/^BT$/,/^ET$/ d' > myimage.eps

而且,如果您真的很想避免使用X11,甚至可以使用Ghostscript的eps2eps命令从命令行缩小图像的边框:

$ eps2eps myimage.eps myimage-bb.eps

我已经测试过了,效果很好。但是,就我个人而言,我发现仅使用Inkscape更容易。


+1您的命令行会剥离所有文本..但是您知道如何也剥离所有图像吗?我正在寻找仅保留矢量图形的解决方案:)
clarkk

这对您有用吗?cat foo.eps | sed '/^8 dict dup begin$/,/^Q$/ c Q' > nobitmaps.eps
hackerb9

1
但是,然后可以检查eps文件是否甚至具有矢量图形吗?:)
clarkk

1
我想您可以使用Ghostscript的eps2eps将其提炼到最小的边界框,看看它是否完全是空的。但是,这开始成为一个新问题。随便问,我敢肯定,如果我不回答,有人会。
hackerb9

1
@ hackerb9谢谢,现在eps可以读取了,但是图像的密度很低,周围仍然有一些文字。pdf在这里,图像在第7页
rtrtrt,
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.