我正在使用 PDFClown java 库创建 PDF 文件。
有时,当使用 Adobe Acrobat Reader 打开这些文件时,我会收到著名的错误消息:
"An error exists on this page. Acrobat may not display the page correctly. Please contact the person who created the PDF document to correct the problem."
只有在向下滚动到第 8 页,然后向上滚动到第 3 页时,才会在(使用 Adobe)读取附件时显示错误。或者,缩小到 33.3% 也会产生该消息。
只是为了记录,福昕阅读器可以完美地读取文件,以及其他 PDF 阅读器(如浏览器)。
我的问题是:
谢谢!
最佳答案
好吧,这并不容易——
由于 PDFClown 中的错误,我在 PDF 页面中的主要信息流已损坏。
在它结束后,它有一个过去实例的副本。
这导致了没有起始命令“BT”的部分文本部分 - 在流的末尾留下了一个没有“BT”的“ET”。
一旦我纠正了这一点,它就运行得很好。
谢谢大家的帮助。
如果没有@Bruno 建议的工具 RUPS,我将很难调试它。
编辑:
该错误位于 Buffer.java:clone() (第 217 行)
而不是线:
克隆。追加(数据);
需要是:
clone.append(data, 0, this.length);
如果没有这个更正,它会克隆整个数据缓冲区,并将克隆的缓冲区的长度设置为 data[].length。如果 Buffer.length 小于 data[].length,这是非常有问题的。
就我而言,结果是在流的尽头有垃圾。
关于调试PDF错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18812789/