news 2026/10/21 3:25:47

使用Python整体高效压缩PDF文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用Python整体高效压缩PDF文件

1.功能

编写Python代码,批量压缩pdf文档,压缩率可达到90%

2.处理思路

先把pdf转成图片,然后压缩图片,再把压缩好的图片合成pdf(以下描述来自AI)
具体思路:

  1. 栅格化(PDF转图片):
    代码读取 PDF 的每一页,强制把页面上的所有内容(文字、矢量图、遮罩)渲染成一张位图数据(Pixmap)。
    • 代码对应:page.get_pixmap(...)
  2. 重编码(图片转JPEG):
    把这张位图数据,使用JPEG 算法进行有损压缩。这一步通过丢弃颜色细节来减小体积。
    • 代码对应:pix.tobytes("jpeg", ...)
  3. 重组装(图片转PDF):
    新建一个空白 PDF 页面,把压缩后的 JPEG 数据流直接填进去,最后保存。
    • 代码对应:new_page.insert_image(...)

总结:原理就是PDF页 -> 渲染为像素点 -> 压缩成JPEG -> 塞回新PDF。

3.准备工作:

python版本:

  • python3.8版本以上

安装第三方库:

pip install pymupdf

参考代码:

importosimportfitz# PyMuPDFimporttime# === 💎 超清重制配置 (影院级) ===# 1. 清晰度 (缩放倍数)# 2.5 = 180 DPI (还有点糊)# 3.0 = 216 DPI (非常清晰,类似 iPad 阅读体验)# 如果还觉得糊,可以极端点设为 4.0 (300 DPI 打印级),但体积会翻倍ZOOM_FACTOR=3.0# 2. 图片质量 (1-100)# 85 是高保真分界线,文字边缘会很干净JPG_QUALITY=85defrasterize_pdf(input_path,output_path):try:doc_src=fitz.open(input_path)doc_out=fitz.open()total_pages=len(doc_src)print(f" 📄 总页数:{total_pages}(超清渲染中...)")forpage_num,pageinenumerate(doc_src):# 1. 超清渲染 (3倍分辨率)# alpha=False 强制白底,防止透明变黑mat=fitz.Matrix(ZOOM_FACTOR,ZOOM_FACTOR)pix=page.get_pixmap(matrix=mat,alpha=False)# 2. 高保真压缩img_data=pix.tobytes("jpeg",jpg_quality=JPG_QUALITY)# 3. 创建页面new_page=doc_out.new_page(width=page.rect.width,height=page.rect.height)# 4. 插入图片new_page.insert_image(page.rect,stream=img_data)# 释放内存 (大图很吃内存,必须及时释放)pix=None# 进度条print(f" [{(page_num+1)/total_pages*100:.0f}%] 第{page_num+1}/{total_pages}页",end="\r")print("")# 保存doc_out.save(output_path,garbage=4,deflate=True)doc_out.close()doc_src.close()returnTrueexceptExceptionase:print(f" ❌ 出错:{e}")returnFalsedefrun_rasterize_batch(input_folder,output_folder):ifnotos.path.exists(output_folder):os.makedirs(output_folder)files=[fforfinos.listdir(input_folder)iff.lower().endswith('.pdf')]print(f"📸 启动【超清重制】模式")print(f"⚙️ 参数: 倍数={ZOOM_FACTOR}x (~{int(72*ZOOM_FACTOR)}DPI) | 画质 Q={JPG_QUALITY}")print("-"*50)fori,finenumerate(files):input_file=os.path.join(input_folder,f)output_file=os.path.join(output_folder,f)start_time=time.time()file_size_org=os.path.getsize(input_file)print(f"({i+1}/{len(files)}) 正在重制:{f}")ifrasterize_pdf(input_file,output_file):ifos.path.exists(output_file):file_size_new=os.path.getsize(output_file)ratio=(1-(file_size_new/file_size_org))*100duration=time.time()-start_timeprint(f" ✅ 完成! 耗时{duration:.1f}s")print(f" 📉 体积:{file_size_org/1024/1024:.1f}MB ->{file_size_new/1024/1024:.1f}MB (节省{ratio:.1f}%)")else:print(f" ❌ 失败")print("-"*50)if__name__=="__main__":# 路径input_dir=r"E:\Aliencell_User_Manual\all_user_manual"output_dir=r"E:\Aliencell_User_Manual\output_cinema_quality"run_rasterize_batch(input_dir,output_dir)
  • 如果想要提高图片质量或者更改清晰度修改参数JPG_QUALITY或者ZOOM_FACTOR
  • 将所有pdf文件放在input_dir ,然后创建一个输出的文件夹。注意更改路径和名称,名称不要用中文
input_dir = r"E:\Aliencell_User_Manual\all_user_manual"output_dir = r"E:\Aliencell_User_Manual\output_cinema_quality"
  • 运行效果
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/12 15:00:16

【科研软件】Typora1.9.5详细安装教程(附安装包)

工具介绍Typora 是一款轻量级跨平台 Markdown 编辑器,凭借简洁直观的界面与丰富实用的功能广受用户青睐。其设计在保持界面简洁易用的同时,实现了强大的功能集成,支持实时预览、自定义 Markdown 语法、主题切换及图片上传等特性,显…

作者头像 李华
网站建设 2026/10/19 19:32:39

ComfyUI自定义节点开发:接入GLM-4.6V-Flash-WEB视觉理解功能

ComfyUI自定义节点开发:接入GLM-4.6V-Flash-WEB视觉理解功能 在AIGC工具日益普及的今天,用户不再满足于“生成一张图”这样基础的操作——他们希望系统能“看懂图像”,并基于语义做出智能响应。比如,上传一张草图后自动描述内容、…

作者头像 李华
网站建设 2026/10/19 18:44:19

测评:戴尔Precision 5690移动工作站,部署DeepSeek+LobeChat

还在为会议纪要、Excel公式、周报文案这些琐碎工作加班到深夜?AI时代,工具选对了,下班准时不是梦。今天至顶AI实验室要和大家分享一个硬核方案:在戴尔Precision 5690移动工作站上部署本地AI智能体,让它成为你真正的“第…

作者头像 李华
网站建设 2026/10/20 17:13:03

GLM-4.6V-Flash-WEB与ComfyUI结合:打造智能视觉工作流

GLM-4.6V-Flash-WEB与ComfyUI结合:打造智能视觉工作流 在今天的内容审核、图像理解与自动化决策场景中,企业越来越依赖能够“看懂图”的AI系统。然而,现实却常常令人沮丧——许多视觉大模型虽然准确率高,但部署复杂、响应迟缓&…

作者头像 李华
网站建设 2026/10/20 11:22:11

ComfyUI节点连线错误排查:GLM-4.6V-Flash-WEB输入输出匹配

ComfyUI节点连线错误排查:GLM-4.6V-Flash-WEB输入输出匹配 在构建多模态AI应用的过程中,越来越多开发者选择使用 ComfyUI 这类图形化流程编排工具来快速搭建视觉语言模型的工作流。其直观的节点式操作极大降低了开发门槛,尤其适合需要频繁调试…

作者头像 李华
网站建设 2026/10/18 8:11:04

GitHub镜像网站Gitee同步GLM-4.6V-Flash-WEB项目仓库

GLM-4.6V-Flash-WEB:轻量级多模态模型的国产化落地实践 在智能应用日益渗透日常生活的今天,用户对“看图说话”式交互的期待已不再局限于科技演示——他们希望上传一张发票就能自动提取信息,拍下一道数学题就能获得解题思路,甚至用…

作者头像 李华