是否有任何 pdf 分析器/调试器来调试 pdf 文件?

Is there any pdf analyser / debugger to debug a pdf file?

是否有任何验证器或 PDF 分析器可以通过提示或指示器告诉我我创建的 PDF 有什么问题我的 PDF 中的哪个对象是错误的或类似的东西?

我想更好地创建和理解 PDF 文件格式,我认为我应该非常接近工作 PDF,但我找不到其中的问题以及为什么 PDF 阅读器无法阅读它。

难道没有一个程序或在线服务至少可以提示我的 pdf 结构有什么问题或问题出在哪里,甚至可以告诉我哪里出了问题?如何调试类似的东西?

这里是 PDF 的 link(只是将附件图像转换为 PDF): https://nonepatchwork.patchwork3d.de/create_pdf/created_pdf.pdf

致以最诚挚的问候,并在此先感谢您

富丘尔

验证器或 PDF 分析器的请求 不是关于堆栈溢出的主题,它更适合 Software Recommendations 站点。因此,在这个答案中,我将重点分析提供的示例文件。

created_pdf.pdf

这里有许多问题立即引起人们的注意,特别是:

  • 您的页面对象 5 指向对象 6 作为内容流,但对象 6 不是内容流而是图像 xobject! (您可能是想指向对象 7。)
  • 你所有的交叉引用 table 偏移量都是错误的。
  • 预告片中的 Size 条目是错误的。
  • trailer 字典和 startxref 之间有一个 /ID

可能还有更多问题,但请先解决这些问题。

created_pdf_2.pdf

您在此处修复了上面列出的错误,但文件仍未按预期显示,Adobe Acrobat Reader 特别指出:

查看图像字典,原因就很清楚了:

6 0 obj << 
        /Type /XObject 
        /Subtype /Image
        /Width 595.276
        /Height 841.89
        /ColorSpace /DeviceRGB 
        /BitsPerComponent 8 
        /Filter/DCTDecode
        /Interpolate true
        /Length 707
    >>  
    ...

宽度高度的值是无效的浮点数。此外,检查流中的实际图像数据,很明显这些值完全不正确,图像的大小仅为 20×20。

因此,将 WidthHeight 条目替换为

        /Width 20
        /Height 20