调试PDF以查找错误

use*_*741 6 pdf debugging acrobat pdf-generation pdfclown

我正在使用PDFClown java库创建PDF文件.

有时,当使用Adobe Acrobat Reader打开这些文件时,我会收到一条着名的错误消息:

"此页面上存在错误.Acrobat可能无法正确显示页面.请与创建PDF文档的人员联系以解决问题."

只有向下滚动到第8页,然后向上滚动到3'页面时,才会在读取(使用Adobe)附加文件时显示错误.或者,缩小到33.3%也会产生消息.

只是为了记录,福昕阅读器完美地读取文件,以及其他PDF阅读器,如浏览器.

我的问题是:

  1. 我的文件出了什么问题?(附件)

  2. 我怎么能找到它的错误?有没有一种工具,它告诉你在那里做的错误在哪里?

谢谢!

use*_*741 5

好吧,这并不容易-

由于PDFClown中的错误,我在PDF页面中的主要信息流已损坏。结束后,它具有其过去实例的副本。这导致没有启动命令“ BT”的部分文本部分-在流的末尾留下了一个没有“ BT”的单个“ ET”。

一旦我纠正了这一点,它就很棒。

谢谢大家的帮助。如果没有@Bruno建议的RUPS工具,我将很难调试它。

编辑:

该错误在Buffer.java:clone()中(第217行)

代替行:

clone.append(data);

需要是:

clone.append(data,0,this.length);

如果不进行此更正,它将克隆整个数据缓冲区,并将克隆的Buffer的长度设置为data []。length。如果Buffer.length小于data []。length,这是非常有问题的。在我的情况下,结果是在流的末尾有垃圾。