乐于分享
好东西不私藏

AI辅助项目:PDF压缩工具

AI辅助项目:PDF压缩工具
一个周末,一个需求,一位 AI 助手,诞生了一款实用的小工具。

缘起:一个让人抓狂的邮件附件

“您的附件总大小超过 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

即可免费获取本文的软件了