PDF文件太大的几种压缩方法:从在线工具到Python脚本 在日常工作中PDF 文件体积过大是一个非常常见的问题。一份几十页的扫描合同动辄几十 MB不仅占用存储空间通过邮件发送也会因为附件大小限制被退回。本文将整理几种主流的 PDF 压缩方案覆盖不同使用场景供你按需选择。一、什么时候需要压缩PDF文件先看几个典型场景看看你是否也遇到过邮件发送被退回邮箱附件限制通常在 10MB-25MB 之间大文件无法直接发送存储空间不足大量扫描件或高清报告占用本地磁盘或云盘空间上传平台受限一些系统对上传文件大小有明确限制如 5MB、20MB文档传输速度慢大文件在网盘同步或即时通讯中传输耗时过长减少流量消耗将 PDF 嵌入网页或分享给移动端用户时小文件加载更快核心思路在不影响可读性的前提下尽可能减小文件体积。不同场景对画质的要求不同需要灵活选择压缩强度。二、方法一在线压缩工具无需安装、即用即走在线工具适合偶尔使用、或办公电脑没有安装专业软件的情况。以91aitool的PDF压缩功能为例操作流程如下支持格式输入仅支持.pdf格式输出为压缩后的 PDF 文件。单文件最大支持300MB。压缩模式该工具提供两种压缩模式对应不同的场景压缩模式适用场景特点文档压缩保持清晰文字型 PDF、合同、报告保留文字清晰度压缩比适中扫描件压缩高压缩比扫描仪生成的图片型 PDF压缩比更高适合图片为主的文档压缩强度每种模式下还有 4 档强度可选档位名称效果预期0轻度压缩画质几乎无损体积减小有限1推荐压缩默认画质与体积的平衡点2重度压缩体积明显减小画质有一定损失3极度压缩体积最小化适合对画质要求低的场景具体步骤打开工具页面点击上传区域选择 PDF 文件或将文件拖拽到上传区在参数面板中选择压缩模式文档压缩 / 扫描件压缩选择压缩强度推荐从默认的推荐压缩开始尝试点击开始转换按提示完成微信扫码登录等待服务端处理完成下载压缩后的文件注意事项需要微信扫码登录后才能使用单次处理一个文件没有批量上传功能服务端转换完成后自动删除原文件不留缓存适合偶尔使用或文件非常大近百 MB需要服务端处理的情况三、方法二Adobe Acrobat Pro 内置压缩功能如果你已经安装了 Adobe Acrobat Pro非免费的 Reader 版可以方便地直接压缩 PDF不需要联网。操作步骤用 Adobe Acrobat Pro 打开需要压缩的 PDF 文件点击顶部菜单文件 → 另存为其它 → 缩小大小的 PDF选择与 Reader 版本的兼容性越高版本兼容性越小但压缩效果越好点击确定保存压缩后的文件另一种方式PDF 优化器如果需要对压缩参数做更精细的控制可以使用PDF 优化器工具 → 优化 PDF或在右侧工具栏中直接找到在弹出的对话框中可以对以下维度分别设置图像设置彩色/灰度/黑白图像的分辨率和压缩质量字体卸载未使用的字体透明度拼合透明效果舍弃对象删除隐藏图层、引用的附件等清理移除元数据、书签、链接等这种方式的优点是控制粒度很细缺点是操作步骤较多需要一定的专业知识来判断哪些可以舍弃。优缺点优点缺点离线使用文件不上传服务器需要付费购买 Acrobat Pro压缩参数可控精细调节操作流程相对复杂适合处理涉密文件仅 Windows/Mac 可用四、方法三Python 脚本批量压缩适合自动化处理如果你需要定期压缩大量 PDF或者想要嵌入到自动化流程中Python 脚本是最高效的选择。方案 A使用 Ghostscript压缩效果好Ghostscript 是 PDF/RGB 后处理的事实标准压缩质量稳定import subprocess import os def compress_pdf_gs(input_path, output_path, qualityebook): 使用 Ghostscript 压缩 PDF quality 可选值: - screen: 屏幕版最低质量最小体积 - ebook: 电子书版中等质量推荐 - printer: 打印版高质量体积较大 - prepress: 印刷版最高质量体积最大 gs_command [ gswin64c, # Windows 下使用 gswin64cLinux/Mac 使用 gs -sDEVICEpdfwrite, -dCompatibilityLevel1.4, f-dPDFSETTINGS/{quality}, -dNOPAUSE, -dQUIET, -dBATCH, f-sOutputFile{output_path}, input_path ] subprocess.run(gs_command, checkTrue) original_size os.path.getsize(input_path) / 1024 compressed_size os.path.getsize(output_path) / 1024 ratio (1 - compressed_size / original_size) * 100 print(f压缩完成{original_size:.0f}KB → {compressed_size:.0f}KB减小 {ratio:.1f}%) # 使用示例 compress_pdf_gs(report.pdf, report_compressed.pdf, qualityebook)注意使用此脚本需要先安装 Ghostscript官方下载并确保gswin64cWindows或gsLinux/Mac在系统 PATH 中。方案 B使用 PyMuPDF (fitz) 提取重压缩如果不想依赖外部工具也可以直接用 PyMuPDF 库pip install PyMuPDFimport fitz # PyMuPDF def compress_pdf_pymupdf(input_path, output_path, zoom2): 通过降低图像分辨率来压缩 PDF zoom 值越大图像分辨率越高文件越大 建议值1.0最大压缩~ 2.0适中~ 3.0高质量 doc fitz.open(input_path) new_doc fitz.open() for page_num in range(len(doc)): page doc[page_num] # 将页面渲染为图像再插入新文档会丢失文字可选中能力 pix page.get_pixmap(matrixfitz.Matrix(zoom, zoom)) img_bytes pix.tobytes(jpeg) new_page new_doc.new_page(widthpage.rect.width, heightpage.rect.height) new_page.insert_image(new_page.rect, streamimg_bytes) new_doc.save(output_path, garbage4, deflateTrue, cleanTrue) new_doc.close() doc.close() original os.path.getsize(input_path) / 1024 compressed os.path.getsize(output_path) / 1024 print(f{original:.0f}KB → {compressed:.0f}KB减小 {(1-compressed/original)*100:.1f}%) # 使用示例 compress_pdf_pymupdf(scan.pdf, scan_small.pdf, zoom1.5)注意PyMuPDF 方式会将 PDF 页面渲染为 JPEG 图像再重新打包会丢失文字的可选中能力适合扫描件和图片型 PDF不适合文字型文档。方案 C脚本自动化处理文件夹如果需要对整个文件夹下的 PDF 批量处理import os import subprocess from pathlib import Path def batch_compress(input_dir, output_dir, qualityebook): 批量压缩文件夹中的所有 PDF Path(output_dir).mkdir(parentsTrue, exist_okTrue) pdf_files [f for f in os.listdir(input_dir) if f.lower().endswith(.pdf)] for i, filename in enumerate(pdf_files, 1): input_path os.path.join(input_dir, filename) output_path os.path.join(output_dir, fcompressed_{filename}) print(f[{i}/{len(pdf_files)}] 正在处理: {filename}) subprocess.run([ gswin64c, -sDEVICEpdfwrite, -dCompatibilityLevel1.4, f-dPDFSETTINGS/{quality}, -dNOPAUSE, -dQUIET, -dBATCH, f-sOutputFile{output_path}, input_path ], checkTrue) batch_compress(./raw_pdfs, ./compressed_pdfs, qualityebook)五、方案对比总结对比维度在线压缩工具Adobe Acrobat ProPython Ghostscript安装要求无需安装需付费购买需安装 Python Ghostscript操作系统全平台浏览器Windows / MacWindows / Mac / Linux离线可用需联网支持离线支持离线单文件大小最大 300MB不限不限批量处理不支持支持动作脚本支持脚本批量压缩参数控制4 档预设精细调节通过参数调节文件安全服务端处理后自动删除本地处理本地处理学习成本低中较高适合频次偶尔使用日常使用大批量/自动化场景推荐临时压缩一个文件发邮件→ 在线工具打开网页即可操作涉密文件不能上传→ Adobe Acrobat Pro 或脚本本地处理每天需要压缩几十个 PDF→ Python Ghostscript 脚本自动处理对压缩质量要求极高→ Adobe Acrobat Pro 精细调节电脑上没有任何软件也不想装→ 在线工具六、总结PDF 压缩并不是一个高深的问题关键在于找到适合自己场景的工具。偶尔用一次打开在线网页拖拽上传就行经常需要压缩考虑 Pro 版软件量大到需要批量处理花 10 分钟配置一套脚本能省下大量重复劳动。另外分享几个减小 PDF 体积的实用技巧不需要压缩也能从源头控制文件大小导出时选择低分辨率从 Word/WPS/PPT 导出 PDF 时在导出设置中选择最小文件大小扫描时降低 DPI扫描文档使用 200-300 DPI 就足够清晰不需要 600 DPI删除不必要的页面合并前的草稿页、空白页会增加不必要的体积图片提前压缩嵌入 PDF 的图片先压缩到合适大小再插入本文提到的在线工具仅为方法示例请根据实际需求选择适合的方案。