使用Inkscape从PDF中提取矢量图形

14

我想从论文中提取一些pdf图片用于演示目的。在Windows系统下,Adobe Illustrator工作得很好,但现在我需要在Debian系统中执行此任务。

我在网上找到了两个流行的解决方案:

由于我需要矢量图形(pdf)而不是jpgs,所以pdfimage不符合我的需求,因此我更喜欢使用Inkscape,但它不能按预期工作。我希望可以使用一些选择器工具拖动一个框并选择其中所有内容,就像我通常在Illustrator中做的那样,但是在Inkscape中没有一个工具能够实现这个功能。

如果我使用“选择和转换对象”工具(黑色箭头),整个pdf页面都会被选中,而我只想要一个小部分;如果我使用“通过节点编辑路径”工具(带有一些节点的黑色三角箭头),我只能单独选择一个对象。拖放(即使按住Shift键)也不起作用。

我想知道是否有办法绕过这个问题,或者在Debian中是否有更好的工具可以实现同样的功能?谢谢。

2个回答

21

在我个人看法中,我可以建议获取PDF中的矢量图像的方法:

有一个叫做

pdftocairo的工具,包含在poppler-utils

语法:

pdftocairo [options] <PDF-file> [<output-file>]

pdftocairo能够将单个PDF页面(如果您有一个多页的PDF文档,首先需要使用pdftk拆分为单个PDF页面),转换成以下输出格式之一:-ps生成PostScript文件、-eps生成封装的PostScript(EPS)、-svg生成可缩放矢量图形(SVG)文件等。在这些格式中,最适合您需求的输出格式可能是svg。因此,在转换PDF页面后,您可以使用任何SVG应用程序(例如inkscape或旧的sodipodi),选择要提取的矢量元素并保存。

总之:

如果您有一个多页PDF

  1. 首先将该多页PDF拆分为单个页面(创建一个文件夹用于存放这些单页)。

    pdftk file.pdf burst
    
  2. 然后使用pdftocairo将任何pdf页面转换为svg

  3. for f in *.pdf; do pdftocairo -svg $f; done
    

它不起作用。在我将其转换为SVG后,Inkscape仍然无法选择我想要的对象。 - Yang
2
你可能需要在选择单个元素之前取消组合元素。 - Dingo

13
您可以使用pdftk拆分多页pdf文件,然后使用inkscape将pdf转换为svg文件,使用命令行进行操作,例如:
inkscape --without-gui --file=input.pdf --export-plain-svg=output.svg

它是否允许批量提取矢量图形? - rivu
太好了,它起作用了!使用http://www.splitpdf.com进行拆分,然后运行建议的命令。 - razor7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接