如何通过Adobe Acrobat Pro程序化实现PDF文件自动压缩?
程序化实现Adobe Acrobat Pro的PDF压缩自动化
我有一个约53MB的PDF文件,用Adobe Acrobat Pro手动操作可压缩至13MB,步骤如下:
- 打开菜单
- 选择「另存为其他」
- 选择「减小文件大小的PDF」或「优化的PDF」
现在需要程序化实现这个压缩流程的自动化,此前用trustedFunction完成过其他任务,但无法将其用于该压缩工作流,尝试的代码中"com.adobe.acrobat.pdf-optimizer"不可用:
var TrustedCompressSave = app.trustedFunction(function(oDoc, cPath) { app.beginPriv(); oDoc.saveAs({ cPath: cPath, cConvID: "com.adobe.acrobat.pdf-optimizer" }); app.endPriv(); });
求一种只需提供PDF文件名就能生成压缩文件的程序化实现方式。
解决方案
1. 使用「减小文件大小」对应的正确转换器ID
你之前使用的com.adobe.acrobat.pdf-optimizer是PDF优化器的ID,但如果要对应手动操作里的「减小文件大小的PDF」,应该用com.adobe.acrobat.reducefilesize这个转换器ID,同时可以指定PDF兼容性版本来控制压缩程度。修改后的代码如下:
var TrustedCompressSave = app.trustedFunction(function(sourceDoc, outputPath, pdfCompat) { app.beginPriv(); // 默认使用Acrobat DC兼容性,可指定为"11.0"、"10.0"等 var compatibility = pdfCompat || "12.0"; sourceDoc.saveAs({ cPath: outputPath, cConvID: "com.adobe.acrobat.reducefilesize", oParams: { cPDFCompatibility: compatibility } }); app.endPriv(); }); // 调用示例 var inputDoc = app.open("/Users/xxx/source.pdf"); TrustedCompressSave(inputDoc, "/Users/xxx/compressed.pdf"); inputDoc.closeDoc();
2. 调用PDF优化器的预设配置
如果需要和手动操作「优化的PDF」一致的精细压缩控制,可以加载Acrobat内置的优化预设(如"Standard"、"High Quality Print")或自定义预设,再执行保存:
var TrustedOptimizePDF = app.trustedFunction(function(sourceDoc, outputPath, presetName) { app.beginPriv(); // 获取指定的优化预设,默认使用"Standard" var optimizePreset = app.pdfOptimizer.getPreset(presetName || "Standard"); if (optimizePreset) { sourceDoc.saveAs({ cPath: outputPath, cConvID: "com.adobe.acrobat.pdf-optimizer", oParams: { oPreset: optimizePreset } }); } else { console.error("指定的优化预设不存在"); } app.endPriv(); }); // 调用示例 var inputDoc = app.open("/Users/xxx/source.pdf"); TrustedOptimizePDF(inputDoc, "/Users/xxx/optimized.pdf", "Standard"); inputDoc.closeDoc();
注意事项
- 确保使用的Adobe Acrobat Pro版本支持对应的JavaScript API,不同版本的参数或转换器ID可能略有差异
- 脚本需要在Acrobat的JavaScript控制台执行,或通过「动作向导」创建自动化动作,文档级脚本无法直接调用特权函数
- 自定义优化预设可以在Acrobat的「PDF优化器」中创建,调用时传入预设名称即可
内容的提问来源于stack exchange,提问作者Simant
相关产品推荐
相关产品推荐

