是否可以从不允许“页面提取”的PDF中提取文本?

时间:2018-06-24 14:03:26

标签: java python itext pdftotext pypdf2

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

enter image description here

更新:

  

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

1 个答案:

答案 0 :(得分:2)

正如OP所澄清的那样,他问这个问题以了解他的受此限制的文档是否可以安全地进行文本提取,并且他不询问如何做到(尽管在文档中给出了明确的语言和库)标签),这里是有关原则选项的答案,而不是具体的实现。因此...

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

您显示的限制仅是向PDF处理者指示作者希望允许或不允许用户处理其文档的标志,但这不是技术限制。

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

Cf。规范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库的开发人员通常根本不尝试实施限制,或者他们添加一些标志来覆盖限制实施,以防止修补的库副本散发。