ITEXT PDFReader无法阅读PDF

时间:2016-09-02 04:49:21

标签: itext pdf-reader

1 个答案:

答案 0 :(得分:0)

有问题的PDF已加密。

根据PDF规范,

  

加密适用于文档PDF文件中的所有字符串和流,但以下情况除外:

     
      
  • 预告片中ID条目的值
  •   
  • 加密词典中的任何字符串
  •   
  • 流内部的任何字符串,例如内容流和压缩对象流,它们本身都是加密的
  •   

稍后会提供有关特殊情况的信息,其中文档级元数据流未加密或仅加密附件。

PDF的交叉引用流字典如下所示:

<<
/Root 101 0 R
/Info 63 0 R
/XRef(stream)
/Encrypt 103 0 R
/ID[<D034DE62220E1CBC2642AC517F0FE9C7><D034DE62220E1CBC2642AC517F0FE9C7>]
/Type/XRef
/W[1 3 2]
/Index[0 107]
/Size 107
/Length 642
>>

正如您所看到的,这里有一个非加密字符串(stream),它既不是ID条目的值,也不是加密字典的值,也不是流内部的值。此外,上述特殊情况也不适用于此。

因此,此文件违反了PDF规范。因此,此文件不是有效的PDF

此外,根据PDF规范

  

文件的最后一行应仅包含文件结束标记%% EOF。

手头的文件就像这样

Screenshot of last lines of file

因此,文件的最后一行确实包含的不是文件结束标记(在之前的行中),0x06和0x0c。

因此,该文件也违反了PDF规范。