如何调试有问题的 PDF?

如何调试有问题的 PDF?

我收到了美国国税局发来的一些 PDF(对我来说,这些通知包含一些特殊信息,是的,我相信它们确实来自美国国税局),这些 PDF 导致我尝试打印的两台完全不同的 HP 打印机崩溃。我向 HP 支持部门投诉了这个问题,但他们没有提供帮助,并表示这是打印机的硬件问题。(我非常怀疑这是硬件问题,因为它在不同代 HP 打印机的两种不同型号上都失败了。最新的打印机更新了不到 6 个月的固件,所以我相信这是 HP 固件中的一个实时错误。)

因此,我正在寻找某种方法来隔离 PDF 中的问题,以便我可以将其报告给 HP(修复其固件以使其不会崩溃)和 IRS(停止生成导致打印机崩溃的有问题的 PDF)。

笔记:

  1. 该文件声称是由 iText 2.1.7 生成的。因此,这可能是 iText 的一个错误或不兼容问题。
  2. 我能够使用 GhostScript 来解析和重新生成 PDF,如下所示这里解释
  3. -dPDFSTOPONWARNING在转换文件时设置GhostScript 不会产生任何警告。
  4. 我尝试使用 MuPDFmutool cleanGhostScript 推荐用于修复有问题的 PDF,通过安装在 Debian 中apt-get install mupdf-tools)但即使是最激进的设置也无法解决问题。

通过查看转换后的 PDF 之间的差异,我现在认为问题与内置字体的使用有某种关系。我不太了解 PostScript,所以我肯定是搞错了,但我认为 PDF 正在尝试使用 Courier 并对其应用“粗体”转换,而不是使用 Courier-Bold。这主要基于以下观察:崩溃的 PDF 不包含任何字体,仅引用 Courier 和 Courier-Oblique,而 GhostScript 输出(打印良好)包含 Courier、Courier-Oblique 和 Courier-Bold 中的字体字形,不使用内置字体。

如果这是一个已知的、有记录的问题,我仍然没有在网上找到对它的引用,但如果有人可以提供,请提供,因为这将帮助我向 HP 和 IRS 上报此事。

相关内容