我发现了一个涉及 Acrobat 的类似问题,但在这种情况下,PDF 是使用我不熟悉的 MS Word 和 CenoPDF v3 的组合制作的。此外,PDF 是 1.3 版。我想解压它,看看它的底层工作原理并做一些改变。使用 GhostScript 的-dCompressPages=false参数很容易,但同时剥夺了所有填写表单的功能。有没有一种方法可以在保持其他所有内容不变的同时解压缩文件?快速搜索 tcpdf 和 fpdi 的文档(在链接中引用)没有显示压缩选项。
2 回答
Ghostscript 和 pdfwrite 不是一个好的组合。你得到的 PDF 文件和你输入的不一样。这是因为 Ghostscript 和 pdfwrite 的工作方式;输入被完全解释为一系列图形基元,然后发送到 Ghostscript 图形库。然后将它们发送到请求的设备,然后大多数设备将结果呈现为位图,但 pdfwrite 系列将这些图形基元重新组合成一个新的 PDF 文件。
请注意,新 PDF 文件的内容与原始文件没有任何关系,除了呈现时的外观。Ghostscript 和 pdfwrite 通过将它们解释为 pdfmark 操作(Adobe 定义的 PostScript 语言的扩展)来维护 PDF 文件的大部分非标记内容,例如超链接等(显然不会变成图形基元) )。但是,即使 Ghostscript 和 pdfwrite 保留了所有这些内容,生成的 PDF 文件也不会与解压缩的原始文件相同......
有一些工具可以解压缩 PDF 文件,我会推荐我们的其他产品之一 MuPDF。其中一部分是 mutool,“mutool clean -d in.pdf out.pdf”将解压缩 PDF 文件中的几乎所有内容
QPDF可以解压缩 PDF 文档(除其他外)。我过去使用过这个工具,它保存了表单和数据。
该工具在处理大型 PDF 时存在一些问题(解压缩可能需要太多时间和内存)。该工具可以为一些部分损坏/非标准的 PDF 生成不完整的输出(在控制台中显示警告)。