【问题标题】:How to extract all images from a "read-protected" PDF from Linux command line?如何从 Linux 命令行从“受读保护”的 PDF 中提取所有图像?
【发布时间】:2015-07-10 10:51:03
【问题描述】:

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

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

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

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

$ pdfimages -j ticket.pdf i

以及来自mupdfpdftohtml 命令:

$ pdftohtml -nodrm ticket.pdf

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

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

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

【问题讨论】:

  • 如果您不是说它的密码受保护,我不知道您所说的“读保护”是什么意思。如果它的密码受到保护,那么内容肯定是加密的。你不能在不提供密码的情况下设置 PDF 文件的权限,所以我有点困惑。但是,如果您可以提取文本,则没有理由不能提取其他内容。

标签: linux pdf imagemagick mupdf poppler


【解决方案1】:

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

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

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

$ 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%

这两个(列出的)图像均由编号/代号为38 0 的同一个 PDF 对象表示(因此它只有 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. 打开和查看文档所需的用户密码。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    相关资源
    最近更新 更多