从PDF文件中提取背景图像?


8

我有一个PDF文件,其中包含我在其中工作的建筑物的地图:

http://www.libsys.und.edu/dev/FloorPlans_All.pdf

原始源文件已经丢失,因此我被要求提取地图图像,最好不要在其上覆盖文字和图标。事实证明,这很烦人。

到目前为止,我已经尝试了以下GUI程序:

  • Adobe Reader:我可以选择文本,但不能选择背景图像
  • FoxIt PDF Viewer:我可以选择文本,但不能选择背景图像
  • Ubuntu 10.10上的XPDF:让我选择文本,但不选择背景图像

以及以下命令行程序:

  • pdfimages:提取表示浴室很好的图标,但不提取背景图像
  • pdftohtml:与pdfimages相同,另外它使标记为HTML文档的文档质量较差
  • pdfextract:与pdfimages相同
  • 转换:成功保存图像,但文本已被烧入图像

我什至尝试过在文本编辑器中手动打开PDF,并通过将流对象粘贴到新文件中并将其保存为.jpg,.png或.bmp扩展名(依次依次保存)来提取流对象。考虑到我对PDF文件的内部结构了解甚少,因此这不起作用也就不足为奇了。

那么...有什么办法可以在不获取文本和图标的情况下从此东西中检索地图图像?


我通常解决此类任务的方式:(1)qpdf尽可能将二进制部分转换为ASCII。(2)使用文本编辑器使所有我不想在屏幕上或打印输出中看到的文本变为不可见(可以很容易地实现,并且通过切换不可见标志不会损坏XRef表)。(3)用Ghostscript重新提取结果,以尽可能缩小其大小。-不幸的是,您的文件不再可下载以演示过程……
Kurt Pfeifle

Answers:


7

您可以从http://www.foolabs.com/xpdf/download.html下载适用于Linux和Windows 的XPDF库。然后运行pdfimages -j input.pdf output,您应该得到output-000.jpgoutput-001.jpg等等。另外,请访问http://linuxcommand.org/man_pages/pdfimages1.html了解更多用法选项。


1
校正,看起来图像是直接嵌入PDF的矢量图形。尝试在处理矢量图形的Inkscape或Adobe Illustrator之类的文件中打开它。
mybluevan 2011年

啊哈!这些地图是矢量图形-难怪我一直遇到这样的麻烦!Inkscape似乎已经很好地打开了它,我可以根据自己的喜好对其进行编辑。谢谢!
威尔·马丁

2

好的,在处理了5分钟之后,我的分析是PDF甚至比我原来想的还要怪异,这是在说些什么。

不确定预算多少,但是使用Acrobat Pro Extended 9,您可以使用:

A.工具,高级编辑,修饰文本工具

-Select All
-Right click, Properties
-Text tab
-Select a standard font (e.g. Arial), close
-Hit Delete

B.工具,高级编辑,修饰对象工具

-选择对象(您可以获得最多但不是全部的对象(例如,无法选择学生计算机图标),然后删除

快速清除后,第1页的外观如下:http : //dl.dropbox.com/u/7434256/p1test.pdf


奇怪的是轻描淡写。我不知道该文件的历史,但是Acrobat Pro 8给我们带来了麻烦。尽管如此,Inkscape还是成功了。现在,它的所有转换为一些适当的SVGs,我们可以生成...光栅图形
威尔·马丁

1
您在原始PDF上所做的工作(不幸的是,不再对我可用)不是最好的。您的文件仍然约为3 MB。它包含很多+未使用的对象。它甚至包含一个/AA运算符的实例(对于Automatic Action),使其成为潜在危险的PDF文件。Ghostscript能够将其煮沸至60 kByte,而不会丢失其任何可见内容。(文件中包含的元数据分布在17个不同的对象上。元数据als表示自2011
Kurt Pfeifle

@pipitas我很高兴我再次检查了一下,原来Apache在该服务器上已关闭。原始PDF再次可用。仍然很烦。从那以后,我发现地图是从AutoCAD DXF文件生成的,这些文件构成了非常丑陋的矢量图形。每个地图中都有数百条单独的路径,每条路径都是一条带有两个端点的直线。这可能使建筑师更容易更改墙的各个部分或其他任何东西,但是对于其他任何事情来说,这都是痛苦的事情。
威尔·马丁

@Will Martin:哦,这是一个相当大的PDF文件,其中包含许多内部隐藏文件更新(因此:从用户的角度来看是垃圾)。-16 Mbytes上的16页对于看起来很简单的矢量图形而言相当“繁重”。至少16个不同的层(在PDF措辞中为“可选内容”),每页一层。我不想只使用文本编辑器来解决这个麻烦……
Kurt Pfeifle

2
@pipitas:谢谢-公平点。尽管我不会描述我作为“工作”所做的事情-我只是在演示(经过数分钟的玩耍之后),Acrobat可以实现。退款保证等等。;)
Craig H

1

使用Craig H制作的PDF,并通过Ghostscript运行该文件进行一些优化。在Windows上,命令行为:

gswin32c.exe ^
   -o p1test-gs-optimized.pdf ^
   -sDEVICE=pdfwrite ^
   -dPDFSETTIINGS=/prepress ^
    p1test.pdf

在Linux / Unix / Mac OS X上执行以下操作:

gs \
   -o p1test-gs-optimized.pdf \
   -sDEVICE=pdfwrite \
   -dPDFSETTIINGS=/prepress \
    p1test.pdf

这会将文件的大小从3.000 KB减小到大约60 KB,而不会丢失内容。然后将其导入Inkscape(或InDesign,Illustrator等)应该更快得多。


1

...您可以尝试使用Photoshop。它读取PDF,并且它“可能”起源于PS,并且可能仍然具有层次...但这是一个长镜头。


0

在Linux环境中,我使用pdfmod一次性提取了所有图像。请参阅https://wiki.gnome.org/Apps/PdfMod,对于Ubuntu用户,请参见https://apps.ubuntu.com/cat/applications/pdfmod/

要在Ubuntu中下载并安装它,只需键入即可sudo apt-get install pdfmod

  • 启动pdfmod GUI(在pdfmod仪表板或命令行终端中键入)
  • 打开PDF文件
  • 选择所有页面(或您要从中提取图像的任何页面)
  • “编辑”菜单项将提供以下选项:在选定范围内(export n images,其中n为适当的数字),可以提取尽可能多的图像。您也可以通过以下方式访问此命令:将鼠标悬停在所选内容上,然后激活本地菜单(右键单击为右手)。
  • 完成此操作后,将打开一个新窗口,您可以在其中选择将图像保存到的位置。

希望这可以帮助。


请阅读“我如何推荐软件”以获取有关如何推荐软件的一些提示。提供的不仅是链接,例如,还有有关软件本身以及如何使用它来解决问题的其他信息。您甚至可以包括一些示例命令行。
DavidPostill

@DavidPostill。感谢您指出了这一点。完成,我相信。
XavierStuvw '16

好多了...;)
DavidPostill

现在,我知道我对帖子的答复有什么要求:-)
XavierStuvw

-1

打开屏幕上的文档,放大图片以使其尽可能大,但所有内容仍然可见。按alt + prnt scrn(或您的操作系统上的等效按钮),它应该对该程序进行截屏。现在打开油漆或您喜欢的图像编辑器(photoshop,gimp等)粘贴到图片中,裁剪掉不需要的任何内容。


这还包括屏幕快照图像中背景图像上方的图标,以及它使用屏幕的分辨率。肯定有更好的办法。
Zachiel
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.