缘起:一个让人抓狂的邮件附件
“您的附件总大小超过 20MB,无法发送。”
这句话估计很多人都见过。那天我正在整理一份产品手册,56 页全彩 PDF,大小 48MB,死活塞不进公司邮箱。压缩网站?担心隐私泄露。Photoshop?一张张图处理太慢。Adobe Acrobat?要付费。于是,一个念头冒了出来:为什么不用 AI 帮我写一个?
说干就干,我打开 ai,输入了我的第一个提示词:“帮我写一个 PDF 文件瘦身的程序。”
从命令行到图形界面:AI 陪我迭代
最初的代码很简单:用 PyMuPDF 库进行无损压缩,运行在命令行。对于普通用户来说,命令行不够友好。于是第二版,我让 AI 加上 Tkinter 图形界面。AI 很快给出了带文件选择、进度条、参数调节的完整 GUI 代码。
但问题来了:压缩率并不理想,只有 10%~20%。AI 分析后指出,我的 PDF 里全是高分辨率图片,无损优化效果有限。它建议加入图片有损压缩模块:降低 DPI、调整 JPEG 质量。这一次,压缩率飙升至 80% 以上——50MB 的文件被压到了 8MB。
核心技术:两阶段压缩策略
经过多轮对话优化,最终的工具采用了双模式压缩:
1. 无损压缩(适合文字/矢量 PDF)
垃圾回收:删除未使用的字体、图像、元数据(级别 0~4,数字越大越彻底)
清理重复资源:合并相同的图像或字体
Deflate 压缩:对内容流进行无损压缩
2. 有损图片压缩(适合扫描件/图片型 PDF)
重采样:限制图片最长边像素(可设为 500~4000)
质量调整:JPEG 压缩质量 30~100
格式转换:将 PNG 等格式转为 JPEG
用户可以在 GUI 中自由勾选、滑动参数,实时预览压缩效果。

功能一览
图形化界面:无需命令行,点选即可
无损/有损可选:根据文件类型自由切换
参数精细调节:垃圾回收级别、图片最长边、JPEG 质量
实时结果展示:压缩前后大小、减少字节、压缩率
完全本地运行:不上传服务器,保护隐私
符合 AGPL 开源要求:内置源代码下载链接和提取码
技术栈
Python 3.7+:跨平台运行
PyMuPDF (fitz):PDF 解析、图片替换
Pillow (PIL):图像缩放、格式转换
Tkinter:原生 GUI,无需额外安装
获取方式
先点关注,
进入公众号后台发送:0613
即可免费获取本文的软件了
夜雨聆风