【问题标题】:Is it possible to extract text from PDF, whose "Page Extraction" is not allowed?是否可以从不允许“页面提取”的 PDF 中提取文本?
【发布时间】:2018-06-24 14:03:25
【问题描述】:

我能够从没有任何安全限制的 PDF 中提取文本。我只是想知道是否可以从有限制的 PDF 中提取文本

更新:

感谢大家的 cmets。感谢您的关注。请理解问题。我没有问怎么做。我只是想知道这是否可能。我创建了一个具有这些限制的 PDF。我不希望从我的文档中提取我的信息。有许多开发人员可以完成任何任务。我想知道这个任务能不能完成。如果可以做到这一点,那么我将进一步调查以解决这个问题。

【问题讨论】:

  • 如果有的话,能否请您说明拒绝投票的原因?如果需要,我会修改问题。谢谢。
  • 您使用许多与当前形式的问题无关的标签标记了这个问题。
  • 你尝试了什么,你期望什么,实际结果是什么,什么没用,你的代码在哪里?
  • 我认为否决票是由于您显然试图做一些明确禁止的事情。如果一个文档基本上拒绝了所有非查看权限,那么请尊重这一点。如果您不这样做,那么如果其他人入侵您的软件或信息,您将无法投诉。
  • 所以你是说你在Python中使用过iText?你是怎么做到的?学习总是很有趣!

标签: java python itext pdftotext pypdf2


【解决方案1】:

正如 OP 澄清的那样,他问这个问题是为了知道他的具有此类限制的文档是否可以安全地进行文本提取,并且他没有问如何做到这一点(尽管给出了明确的语言和库)标签),这里是关于原则选项的答案,而不是具体的实现。于是……

是的,可以从有限制的文档中提取文本,只要该文档完全可以阅读并且没有应用其他方法来阻止文本提取。

您显示的限制只是向 PDF 处理器指示作者希望允许或不允许用户对其文档执行什么操作的标志,但它们不是技术限制。

这些限制只能应用于加密文档,但您肯定希望这些限制特别适用于可以打开文档进行阅读的任何人(除了您),无论是通过知道特定用户密码还是通过使用空密码。

参照。 ISO 32000 规范(此处来自第 2 部分,与第 1 部分类似,重点关注 PDF 查看器):

如果用户尝试打开具有用户密码的加密文档,PDF阅读器应首先尝试使用第 7.6.4.3 节“文件加密密钥算法”中定义的填充字符串(默认用户密码)验证加密文档:

  • 如果此身份验证尝试成功,则 PDF 阅读器可以打开、解密、呈现和以其他方式提供对文档的访问权限。

  • 如果此身份验证尝试失败,交互式 PDF 处理器应提示输入密码。正确提供任一密码(所有者或用户密码)应该使用户能够访问文档。

是否允许对解密的文档进行其他操作取决于打开文档时提供的密码(如果有)以及创建文档时指定的任何访问限制:

  • 使用正确的所有者密码打开文档应该允许完全(所有者)访问文档。这种无限制的访问权限包括更改文档密码和访问权限的能力。

  • 使用正确的用户密码打开文档(或使用默认密码打开文档)应该允许根据文档加密字典中指定的用户访问权限执行其他操作。

访问权限应以与各种操作相对应的标志的形式指定,它们对应的操作集应取决于安全处理程序的修订号(也存储在加密字典中)。

...

文档成功打开和解密后,从技术上讲,PDF 阅读器可以访问文档的全部内容。 PDF 加密中没有任何固有的东西可以强制执行加密字典中指定的文档权限。 PDF 阅读器应尊重文档创建者的意图,根据文件中包含的权限限制用户访问加密的 PDF 文件。

(ISO 32000-2 第 7.6.4 节标准安全处理程序)

因此,这些限制仅适用于协作的 PDF 处理器,但特别是在开源 PDF 库的情况下,程序员删除任何试图强制执行限制的代码是微不足道的。

意识到这一点,开源 PDF 库的开发人员通常根本不会尝试强制执行限制,或者他们添加一些标志来覆盖强制执行以防止库的修补副本传播。

【讨论】:

    猜你喜欢
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多