调试PDF错误

标签 debugging pdf pdf-generation acrobat pdfclown

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

有时,当使用 Adob​​e 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 页时,才会在(使用 Adob​​e)读取附件时显示错误。或者,缩小到 33.3% 也会产生该消息。

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

我的问题是:
  • 我的文件怎么了?? ( file is attached )
  • 我怎样才能找到它有什么问题?有没有一种工具可以告诉您错误在哪里?

  • 谢谢!

    最佳答案

    好吧,这并不容易——

    由于 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/

    相关文章:

    php - 在 Zend 或 PHP 中显示 PDF 内容?

    delphi - 如何从Delphi创建兼容PDF/X-3:2002的PDF文件?

    c# - MoveNext 的前缀在堆栈中意味着什么?

    c# - 调试实时 ASP.net 网站

    ios - iOS 中的 Google Drive 集成以上传 PDF 文件

    html - 适合导出为 html 和 pdf 的格式?

    django - 如何使用 LaTeX 以编程方式生成 PDF?

    c# - ITextSharp 将文本插入现有的 pdf

    debugging - + grails调试分支+ suspend

    PHP:用于调试的函数执行时间