1

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

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

在以下 PDF(此处为原始 PDF)中,您可以在许多图像下方的缩略图中看到:

在此处输入图像描述

我尝试了Poppler 库pdfimages中的命令:

$ pdfimages -j ticket.pdf i

pdftohtml来自mupdf的命令:

$ pdftohtml -nodrm ticket.pdf

但是这两个库都只提取了许多图像中的一个。不过,该图像已正确提取。我从其他 PDF 中得到所有图像,但它们都是灰色或黑色的。

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

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

4

1 回答 1

0

并非所有看起来像图像的东西也是图像

以左上角的红蓝黄绿标志为例,上面有黑+白的“票务服务”文字:它是一系列矢量图形(红蓝黄绿各色块)是一个单独的对象,文本也是)。

唯一的“真实”(光栅)图像是以下命令列出的图像:

$ 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(因此它只是嵌入在 PDF 中的 1 个图像)。

仅仅因为页面是彩色的并不意味着嵌入了很多图像!

此外,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 文档中的一个标志 [....]”

首先,没有“读保护”之类的东西。您可能的意思是“密码保护”。

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

  1. 更改文档的安全/密码/加密状态所需的所有者密码。
  2. 打开和查看文档所需的用户密码。

但是,有(很常见的)用户密码为“空”的情况。所有 PDF 阅读器都知道这一点,他们首先尝试使用空用户“密码”。如果可行,他们将解密并打开 PDF。用户密码为空的 PDF 仍可通过限制复制粘贴、打印、修改等来保护。要更改该状态,您需要知道所有者密码...

于 2015-04-30T18:32:19.613 回答