news 2026/4/18 8:20:10

使用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/4/18 8:06:19

一文读懂大模型开发两大核心协议:MCP与A2A的区别与应用!

在智能代理开发领域,随着多智能体系统和工具集成的普及,我们经常会遇到两个概念:模型上下文协议(MCP)和Agent2Agent 协议(A2A)。它们都是为了让智能体更好地互相协作或与外部资源交互而设计的&a…

作者头像 李华
网站建设 2026/4/18 8:05:55

JavaScript异步请求GLM-4.6V-Flash-WEB API返回结构化图像信息

JavaScript异步请求GLM-4.6V-Flash-WEB API返回结构化图像信息 在零售门店的数字化管理系统中,一张随手拍摄的货架照片,能否自动识别出所有商品及其价格?传统OCR工具或许能提取文字,却难以判断“右下角那个8.5元的标签到底属于哪一…

作者头像 李华
网站建设 2026/4/12 9:10:02

MicroPE官网集成CUDA工具包支持GLM-4.6V-Flash-WEB推理

MicroPE官网集成CUDA工具包支持GLM-4.6V-Flash-WEB推理 在今天这个图像内容爆炸式增长的时代,从电商商品图自动打标,到社交媒体内容审核,再到智能客服中的图文问答,多模态AI能力正迅速成为各类应用的标配。然而,现实却…

作者头像 李华
网站建设 2026/4/17 0:06:22

GitHub镜像网站推荐2024:高效获取GLM-4.6V-Flash-WEB资源

GitHub镜像网站推荐2024:高效获取GLM-4.6V-Flash-WEB资源 在AI技术加速落地的今天,一个现实问题始终困扰着国内开发者——如何快速、稳定地获取开源大模型?尤其是当项目依赖动辄数GB的权重文件时,直接从GitHub拉取常常面临超时、…

作者头像 李华
网站建设 2026/4/18 3:37:29

Chromedriver下载地址总是失效?GLM-4.6V-Flash-WEB识别有效链接

Chromedriver下载地址总是失效?GLM-4.6V-Flash-WEB识别有效链接 在自动化测试和爬虫开发的世界里,一个看似微不足道的问题却可能让整个流程卡住——Chromedriver 下载链接 404 了。 这几乎是每个开发者都经历过的“日常噩梦”:CI/CD 流水线突…

作者头像 李华
网站建设 2026/4/18 1:26:34

GLM-4.6V-Flash-WEB模型深度解析:高并发场景下的视觉理解利器

GLM-4.6V-Flash-WEB模型深度解析:高并发场景下的视觉理解利器 在当今智能应用快速渗透的背景下,用户对系统的“看得懂、答得快”能力提出了前所未有的要求。无论是电商平台上传商品瑕疵图后自动判断责任归属,还是政务系统中上传表单即可获取…

作者头像 李华