使用Python压缩PDF文件

22

我有很多PDF文档在一个文件夹里,我想要使用os.path.walk递归地将它们压缩。我发现Adobe Pro有“另存为减小文件大小”的功能。我能否使用它/您有什么其他建议?

注:是的,我希望它们保持为PDF格式,因为我认为这是最常用和安装的文件查看器。


1
你目前写了什么? - Adam Mihalcin
3
pdfsizeopt是一款不需要Adobe产品的Python编写的软件,网址为:http://code.google.com/p/pdfsizeopt/。 - Blender
@AdamMihalcin,目前我只有递归的东西,os.path.walk(arg1,arg2,arg3)。我想知道应该使用哪个程序来压缩它。我会看一下pdfsizeopt! - Eiyrioü von Kauyf
3个回答

12

来自用Python编写的pdfsizeopt项目的GitHub页面:

pdfsizeopt是一个将大型PDF文件转换为小型文件的程序。更具体地说,pdfsizeopt是一款免费的跨平台命令行应用程序(适用于Linux、Mac OS X、Windows和Unix),以及一系列最佳实践方法,用于优化PDF文件的大小,重点关注从TeX和LaTeX文档创建的PDFs。 pdfsizeopt是用Python编写的..."

您可以很容易地根据自己的需要进行调整。


4
对于那些考虑这个选项的人,最后一次提交是在2014年,它依赖于一个旧的且已经过时的Java库。我无法使其正常工作,Java库仅出现了这个错误:AssertionError:Multivalent failed (status)。 - h3.
1
更新了链接,使其指向GitHub。在那里:“Commits on Jul 30, 2017” https://github.com/pts/pdfsizeopt/commits/master - 而且https://github.com/pts/pdfsizeopt/issues目前看起来也很活跃,我建议你在那里描述你的经验。 - the
太棒了。它的表现非常出色(甚至比小pdf更好,而且是免费的)。 - Agi Hammerthief
这个项目似乎在处理某些PDF文件时有一些问题。(它输出一些关于尝试优化XObject图像的内容,这似乎会导致它进入一个无限循环,不断处理同一项。我没有重定向输出以提交错误报告,因为它并不是必须成功压缩我正在尝试的所有PDF文件的关键。) - Agi Hammerthief

7

意译:意识到这是一个老问题。我会建议一种替代pdfsizeopt的方案,因为我在使用它处理地图PDF时经历过质量损失。 PDFTron 提供了全面的功能集合。以下代码片段修改自他们网页上的示例1

import site
site.addsitedir(r"...pathToPDFTron\PDFNetWrappersWin32\PDFNetC\Lib")

from PDFNetPython import PDFDoc, Optimizer, SDFDoc

doc = PDFDoc(inPDF_Path)
doc.InitSecurityHandler()
Optimizer.Optimize(doc)
doc.Save(outPDF_Path, SDFDoc.e_linearized)
doc.Close()

2
请注意应该是 from PDFNetPython3 import ... - anishtain4
9
看起来你需要购买他们的SDK,而且还得通过销售代表。很遗憾:( 他们说试用版是“无限制”的,但不太清楚这实际上是什么意思。 - Jerther

1

pdfsizeopt正在缩小我的PDF的最后一页。

然而,一个现在已被删除的答案提供的解决方案非常有用:Python编写的工具pdfc,托管在Github上,并定期更新,对我来说运行良好。

您可以从存储库中下载Python文件pdf_compressor.pyhttps://github.com/theeko74/pdfc/blob/master/pdf_compressor.py

假设您已经安装了Ghostscript,然后可以运行以下命令:

python pdf_compressor.py <PDF-input-file> --backup

更多关于可用选项的详细信息,请参阅存储库的README:https://github.com/theeko74/pdfc

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