- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试从受读取保护的 PDF 中提取图像。
对于普通 PDF,Poppler library可以很好地提取图像,并且可以从 protected PDF 中提取文本。这些图像是一个不同的故事。它要么不提取所有图像,要么以模糊的灰色或黑色提取所有图像。
在下面的 PDF ( original PDF here ) 中,您可以在下面的缩略图中看到很多图像:
我尝试了 Poppler library 中的 pdfimages
命令:
$ pdfimages -j ticket.pdf i
和来自 mupdf 的 pdftohtml
命令:
$ pdftohtml -nodrm ticket.pdf
但是两个库都只提取了众多图像中的一个。虽然该图像已正确提取。我从其他 PDF 获得所有图像,但它们都是灰色或黑色。
由于阅读保护被认为只是 PDF 文档中的一个标志,而不是源的实际加扰或加密(最终您的计算机可以在不输入密码的情况下显示图像)所以应该可以以某种方式提取图像单独。我什至可以使用 ImageMagick 从整个 PDF 创建缩略图(convert ticket.pdf ticket.jpg
),那么为什么不是单独的图像呢?
有人知道如何从受阅读保护的 PDF 中提取所有图像吗?欢迎所有提示!
最佳答案
并不是所有看起来像图像的东西也是图像。
以左上角的红蓝黄绿logo为例,黑+白的“ticket-service”字样:是一系列的矢量图形(红蓝黄各一个)绿色补丁是一个单独的对象,文本也是如此)。
唯一的“真实”(光栅)图像是由以下命令列出的:
$ 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
(因此它是只有 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
行报告。
"[....] read-protection is supposedly only a flag in the PDF document [....]"
首先,没有“读保护”这样的东西。您可能指的是“密码保护”。
其次,如果 PDF 受密码保护,它也被加密。有两个密码:
但是,在某些情况下(很常见)用户密码为“空”。所有 PDF 阅读器都知道这一点,并且他们会首先尝试使用空的用户“密码”。如果有效,他们会解密并打开 PDF。用户密码为空的 PDF 仍可通过限制复制'n'粘贴、打印、修改等方式受到保护。要更改该状态,您需要知道所有者密码...
关于linux - 如何从 Linux 命令行中提取 "read-protected"PDF 中的所有图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29972756/
这个问题在这里已经有了答案: How to make a property protected AND internal in C#? (8 个答案) 关闭 9 年前。 我需要声明一个既受又 内部保
我有以下代码: class Base{ protected val alpha ="Alpha"; protected def sayHello = "Hello"; } class
我正在尝试运行一个宏来创建一个工作正常的pdf。 Excel 文件获得签名后,Excel 文件将自动受到保护。 问题:我的工作表上有一个按钮,需要按下该按钮才能创建 pdf 文档网。然而,这是无法完成
子类需要能够使用种子随机数生成器。 使用的优点和缺点是什么 public abstract class AbstractClass { protected Random rnd; public
我们有两个类(class)(A 和 B)。 A类只能由继承它的类创建(A类)B 类可以由用户创建。 A 类,版本 1 有一个private 数据成员,并且有方法访问 A 类中的数据。 A 类,版本 2
当父类受到保护时,我对继承类的默认构造函数有疑问,在我看来,子类也会有一个默认构造函数受到保护,但事实并非如此。 除了在子类上强制默认构造函数外,还有其他方法可以强制保护默认构造函数吗? C++11
我有一个抽象类,我想在其 protected 构造函数中初始化一个只读字段。我希望这个只读字段在派生类中可用。 按照我将所有字段设为私有(private)并公开属性的习惯,我实现如下: abstrac
我在运行大数据时遇到错误。错误已由以下示例示例解释 加载数据 mdata <- as.matrix(read.table('https://gubox.box.com/shared/static
我在获取 时遇到问题非法访问错误 对于以下示例: 我在名为 arch 的 gradle 模块中声明了一个基类 abstract class BaseClass { protected abst
我相信通过 实现 JSF 应用程序的安全性+ + & 通过使用 是两种不同的方式!?他们是吗? 我尝试通过上述第一种方法(使用 + + )来实现安全性,但发现使用 protected 和不
有没有办法确定以下的二传手能见度差异: public Prop { get; protected set; } protected Prop { get; set; } 使用反射?还是那些与 C# 反
我读了一本关于 OOP 的书,并且关于“ protected ”访问修饰符的示例对我来说很奇怪。 例子总结 这个例子是为了测试“protected”保留字对变量的影响。 ClassA 有 2 个 pr
内部——在集会上公开,在其他地方私有(private)。 protected - 只有派生类可以访问父类成员。 Protected internal - protected OR internal -
我有一个类代表 Wicket 中带有“返回”、“前进”和“取消”按钮的基本页面。但并非所有页面都有所有按钮,例如。 G。第一页明显没有“返回”。 我的想法是定义一个通用的ActionHandler p
在了解到嵌套类是嵌套类的成员并因此可以完全访问嵌套类的成员这一事实后(至少对于 C++11,请参见 here),我在尝试创建嵌套类模板: #include using namespace std;
我刚刚使用了 Resharper,并一直在尝试将字段转换为属性。我希望这些属性受到保护,但 Resharper 不想给我这个选项。相反,只有一个 protected 内部选项。这让我思考。要么某处有一
这是 question 的扩展一个小时前问过。 当覆盖派生类中的虚方法时,我们不能修改访问修饰符。考虑 System.Web.UI 命名空间中的 Control 类 public class Cont
有人可以解释一下 C# 中 protected 和 protected internal 修饰符之间的区别吗?看起来他们的行为是相同的。 最佳答案 “protected internal”访问修饰符是
我想知道下面两行代码之间是否有区别: protected $var = null; protected $var; 我已经看到两者都被使用了,我想知道这是否只是一个偏好问题,(也就是 $var; 将变
我正在尝试使用mockito为“另存为”操作编写单元测试。该操作的一部分是制作并显示一个文件对话框,用户可以在其中输入要保存的文件。选择文件不是我可以自动化的操作,因此我想模拟 FileDialog
我是一名优秀的程序员,十分优秀!