如何从Linux命令行中提取“读保护”PDF中的所有图像?

时间:2015-04-30 16:12:41

标签: linux pdf imagemagick mupdf poppler

我正在尝试从受保护的PDF中提取图像。

使用普通PDF,Poppler library可以很好地提取图像,而对于受过读保护的PDF,它也可以提取文本。然而,这些图像是一个不同的故事。它要么不提取所有图像,要么以模糊的灰色或黑色提取所有图像。

在下面的PDF(original PDF here)中,您可以在下面的缩略图中看到很多图像:

enter image description here

我尝试了Poppler library

中的pdfimages命令
$ pdfimages -j ticket.pdf i

和来自mupdfpdftohtml命令:

$ pdftohtml -nodrm ticket.pdf

但是这两个lib只提取了许多图像中的一个。然而,该图像被正确提取。从其他PDF我得到所有图像,但所有图像都是灰色或黑色。

由于读取保护应该只是PDF文档中的标志,而不是源的实际加扰或加密(最终您的计算机可以显示图像而不输入密码),应该可以以某种方式提取单独的图像。我甚至可以使用ImageMagickconvert ticket.pdf ticket.jpg)从整个PDF创建缩略图,为什么不是单个图像?

有谁知道如何从读保护的PDF中提取所有图像?欢迎所有提示!

1 个答案:

答案 0 :(得分:0)

看起来的所有内容都不像图像 IS 图像。

例如,左上角的红蓝黄绿色标志带有黑色+白色"票务服务" text:它是一系列矢量图形(红色,蓝色,黄色和绿色斑块中的每一个都是单独的对象,文本也是如此)。

唯一的"真实" (栅格)图像是以下命令列出的图像:

$ pdfimages -list ticket.pdf 

 page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
 --------------------------------------------------------------------------------------------
    1     0 image     642   462  index   1   8  image  no        38  0   151   151  107K  37%
    2     1 image     642   462  index   1   8  image  no        38  0   151   151  107K  37%

这些(列出的)图像均由相同的PDF对象表示,其编号/代38 0(因此 IS 仅嵌入1个图像PDF)。

仅仅因为页面色彩丰富并不意味着嵌入了大量图片!

此外,没有"读保护"在PDF上(无论对您来说意味着什么),并且在该PDF上也没有(用户或所有者)密码和配套加密,如以下命令所示:

$ pdfinfo ticket.pdf

 Title:          TicketFast
 Author:         Ticketmaster
 Creator:        TCT 4.4.4
 Producer:       PDFlib+PDI 5.0.4 (C++/Linux)
 CreationDate:   Wed May  5 18:21:29 2010
 ModDate:        Thu Apr 30 16:02:21 2015
 Tagged:         no
 UserProperties: no
 Suspects:       no
 Form:           none
 JavaScript:     no
 Pages:          2
 Encrypted:      no
 Page size:      595.275 x 841.89 pts (A4)
 Page rot:       0
 File size:      364994 bytes
 Optimized:      no
 PDF version:    1.4

如果在PDF上设置 WAS 密码/加密,则会使用第Encrypted: yes行进行报告。

关于PDF保护的一些评论

  

" [....]读取保护应该只是PDF文档中的标志[....]"

首先,没有"读保护"。你可能意味着"密码保护"。

其次, IF PDF受密码保护,也是加密的。有两个密码:

  1. 所有者密码,用于将更改更改为文档的安全/密码/加密状态。
  2. 打开并查看文档所需的用户密码。
  3. 然而,当用户密码被留下"空"时,存在(非常常见的)情况。所有PDF阅读器都知道这一点,并且他们尝试空用户"密码"第一。如果它有效,它们将解密并打开PDF。具有空用户密码的PDF仍然可以通过限制复制粘贴,打印,修改等来保护。要更改该状态,您需要知道所有者密码......