Acrobat Reader 想重新设计我的 PDF 文件

Acrobat Reader would like to re-design my PDF file

我正在制作自己的 PDF parser/maker。目前我能够解析现有的 PDF 文件,甚至可以根据早期解析的数据制作新的 PDF。但问题是,当我打开一个新的 PDF 文件(由我的 parser/maker 制作)时,Adobe Reader 想重新设计文档(当我关闭文档时 Reader 建议我存储"changed document")。当我的文档内部结构不正确时,我早些时候遇到过这样的问题。但是使用最新版本的解析器,我看不出文件结构有任何问题,需要询问 "PDF gurus"。我应该说我通过在线 PDF 检查工具以及在 Adob​​e Reader Pro 中进行了 PDF 结构检查。此外,我发现的所有现有 PDF 解析器都可以毫无问题地解析我的 PDF。我遇到的唯一问题是 Adob​​e Reader.

所以,我有两个文件:

  1. Initial PDF file;
  2. Secondary PDF file, made by my tool;

事实上,"secondary PDF" 是初始 PDF 的简单副本,内部 PDF 结构略有变化。当然,所有 "xref" 偏移量也被更改。这两个文件都非常简单,只有 18 个内部对象,其中大部分是字体对象。 "second PDF" 是 Adob​​e Reader.

认为有问题的 PDF

如果有人能给我 link 任何 Reader 特定的 PDF 文件规则(如果您有的话),我将不胜感激。

_secondary.pdf 中的交叉引用 table 中的条目 只有 19 个字节 长,而不是 20 个字节 符合预期:

Each entry shall be exactly 20 bytes long, including the end-of-line marker.

您不是唯一生成此类文件的人,这就是为什么大多数 readers/parsers 都集成了回退或根本忽略 20 字节计数的原因。

无论如何,该文件应该标记为已损坏(Acrobat 所做的),因为它需要手动解析交叉引用 table 或完整文件。在这种情况下,解析器无法使用固定条目大小直接跳转到交叉引用中的对象偏移量定义 table.