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

如何从Linux命令行中从“受读保护”的PDF中提取所有图像?,linux,pdf,imagemagick,mupdf,poppler,Linux,Pdf,Imagemagick,Mupdf,Poppler,我正在尝试从一个受读取保护的PDF中提取图像 使用普通PDF可以很好地提取图像,从受读保护的PDF中也可以很好地提取文本。然而,这些图像是一个不同的故事。它要么不提取所有图像,要么提取模糊的灰色或黑色的所有图像 在以下PDF中,您可以在下面的缩略图中看到许多图像: 我从以下位置尝试了pdfimages命令: 以及来自以下位置的pdftohtml命令: 但这两个LIB只提取众多图像中的一个。不过,该图像提取正确。从其他PDF中我得到了所有的图像,但它们都是灰色或黑色的 由于读取保护被认为只是PDF

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

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

在以下PDF中,您可以在下面的缩略图中看到许多图像:

我从以下位置尝试了pdfimages命令:

以及来自以下位置的pdftohtml命令:

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

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

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

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

例如,左上角的红-蓝-黄-绿徽标,带有黑色+白色票务服务文本:它是一系列矢量图形,红色、蓝色、黄色和绿色的每个补丁都是一个单独的对象,就像文本一样

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

$ 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%
$ 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
这两个列出的图像都由编号为/generation 38 0的同一个PDF对象表示,因此PDF中只嵌入了一个图像

仅仅因为页面是彩色的并不意味着有很多图片嵌入

此外,PDF上没有对您意味着什么的读取保护,并且该PDF上也没有附带加密的用户或所有者密码,如下命令所示:

$ 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%
$ 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上设置了密码/加密,它将报告密码/加密,并显示加密的行:是

关于PDF保护的一些评论 […]读保护应该只是PDF文档中的一个标志[…]

首先,没有读保护这样的东西。你可能是说密码保护

第二,如果PDF受密码保护,它也会被加密。有两个密码:

更改文档的安全/密码/加密状态所需的所有者密码。 打开和查看文档所需的用户密码。
但是,用户密码为空的情况非常常见。所有PDF阅读器都知道这一点,他们会首先尝试使用空用户密码。如果有效,他们将解密并打开PDF。用户密码为空的PDF仍可通过限制复制、粘贴、打印、修改等方式进行保护。要更改该状态,您需要知道所有者密码…

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