如何使用ghostscript删除PDF中的重复对象?

时间:2014-12-04 13:52:24

标签: pdf command-line ghostscript duplicate-removal

使用命令行ghostscript,是否可以删除PDF中的重复嵌入对象(图像)并将其替换为单个实例?

我有200多页PDF,背景图片和每页上的一些较小的徽标。该文件非常大,因为每个页面中都嵌入了相同的背景图像和徽标二进制文件,而不是嵌入一次然后在每个页面上引用。我不是PDF的创建者所以我无法解决问题的来源。

(我不想缩小或降低图像质量,我不想完全删除它们。)

2 个答案:

答案 0 :(得分:2)

不,ghostscript(更具体地说是pdfwrite设备)不会替换图像XObjects或内嵌图像,它不会测试它们以查看tehy是否相同。

这样做是可能的,但这意味着要检查每个图像的每个字节,这在性能上可能非常昂贵,所以我们暂时不这样做。如果您想修改源代码,我可以提供一些建议。

FWIW许多其他对象都经过重复测试,但不是图像,只是因为读取和散列大图像所花费的时间。

答案 1 :(得分:2)

作为ghostscript的补充,pdfsizeopt在消除PDF中的重复嵌入对象(包括背景图像)方面做得非常出色,并且可以在ghostscript处理文件之前或之后运行。然而,由于它的依赖性而包含在工作流中有点棘手,并且会创建大量临时文件。可以在https://github.com/pts/pdfsizeopt(以前为https://code.google.com/p/pdfsizeopt/

找到

我的200多页文档仅通过删除重复图像就可以从150MB到40MB。