使用Delphi在事后压缩PDF

3
我有一些应用程序,使用PDF-in-the-box来生成PDF文档。这些PDF文档没有被压缩,而且似乎没有办法通过该组件实现压缩。Rave组件实现了一个压缩事件处理程序,我已经在其他从头开始设计的应用程序中成功地使用过。我不想重新编写PDF-in-the-box的内容。在Delphi中,我是否可以在生成PDF文档后对其进行压缩呢?(这不是图像压缩 - 这是PDF内容的无损压缩。通常会导致PDF大小减小三倍)。我可以通过在Adobe Reader中打开使用PDF-in-the-box生成的PDF文档并重新保存它们来模拟所需的效果。重新保存后的PDF文件要小得多。我只是想在代码中做同样的事情。

谢谢@David。这意味着需要重新编码,但我在想,与其重新编码应用程序以使用另一个PDF库,不如使用SynPDF来后处理生成的未压缩PDF - 即使用SynPDF编写的例程,仅读取PDF,然后再启用压缩将其输出。这可能是更简单的方法,对吗? - rossmcm
这正是我所想的。更好的做法是只编写一次代码,但重新编码可能是一个妥协的权宜之计。 - David Heffernan
@David,从我简短的了解来看,SynPDF无法读取它们,只能生成它们。 - rossmcm
1个回答

0
如果使用命令行中的外部工具不是问题,您可以尝试以下方法:
  • Ghostscript -dPDFSETTINGS选项(不幸的是文档记录得不太好)
  • QPDF --stream-data=compress 选项。

对我来说,QPDF 的速度似乎更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接