自己动手,用Python写一个本地PDF压缩工具!
自己动手,用Python写一个本地PDF压缩工具!
在日常办公中,你是否也遇到过这样的烦恼?
一份刚用iPhone扫描的合同PDF,动辄几十甚至上百兆;而公司ERP系统、电子签章平台或合同管理系统却对上传文件大小有严格限制——通常不超过 5MB 或 10MB。更头疼的是,这些合同往往涉及商业机密或客户隐私。
于是,一个念头油然而生:能不能自己做一个完全离线、安全可控的PDF压缩软件?
答案是:能!而且比你想象的更简单。
从一个提问开始
我在通义千问(Qwen)里输入了这样一段提示词:
❝
“像 https://smallpdf.com/ 这样的网站是如何压缩PDF的?我能用 Python + PySide6 做一个可执行的 .exe 压缩软件吗?前提是我已经装好了 Python 和 PySide6,注意兼容版本。”
没想到,AI 直接给出了完整可运行的代码框架!只需复制粘贴到 PyCharm,稍作调整,就能跑起来。
当然,过程并非一帆风顺。开发中我遇到了几个典型问题:
-
压缩后文件大小几乎没变 → 原因是未启用图像重采样和内容优化; -
报错 ModuleNotFoundError: No module named 'pikepdf'→ 需手动安装pip install pikepdf; -
PySide6 报 Shiboken 类型转换错误 → 因为信号槽连接时传参类型不匹配,调整后解决。
每一次报错截图丢给 AI,它都能精准定位问题并给出修复方案。这种“人机协作”开发体验,真的太高效了!
为什么选择 pikepdf?
Smallpdf 等在线工具的核心原理,其实是通过 降低图像分辨率、移除冗余元数据、优化字体嵌入、压缩流对象等方式减小体积。而 Python 生态中,pikepdf 是一个基于 qpdf 的高性能库,支持无损/有损压缩,且完全离线运行,非常适合处理敏感文档。
配合 PySide6 构建图形界面,用户只需:
-
点击“选择文件” -
设置压缩等级(如“标准”或“高压缩”) -
点击“开始压缩” -
自动保存到指定位置
整个过程不联网、不上传、不留痕,真正实现数据本地闭环。
成果展示
最终做出的软件界面虽简洁(毕竟不是UI设计师 😅),但功能扎实:
-
支持拖拽或浏览选择PDF(暂未实现) -
实时显示原始与目标文件大小(暂未实现) -
压缩率可达 **60%~90%**(视内容而定) -
打包成 .exe后,同事双击即可使用,无需安装Python环境



更重要的是——你的合同,始终留在你自己的电脑里。
写在最后
在这个数据即资产的时代,安全与效率不该二选一。借助 AI 编程助手 + 开源工具,普通人也能快速构建专属生产力工具。
如果你也常被大PDF困扰,不妨试试自己动手。代码不难,思路清晰,关键还能彻底掌控数据主权。
❝
技术不是门槛,而是杠杆。用对工具,你就是办公室里的“隐形极客”。
附:核心依赖
pip install pikepdf PySide6
(完整代码及打包教程可留言获取,后续我们也会开源到 GitHub~)
本文工具仅用于合法合规场景,请勿用于侵犯他人隐私或绕过企业安全策略。
夜雨聆风
