告别付费!Claude 亲手打造的免费 PDF 工具箱
平时处理 PDF 真的是一堆零零碎碎的破事儿 😩。
📦 写在前面
平时处理 PDF 真的是一堆零零碎碎的破事儿 😩
- 有的文件设了密码打不开 🔒
- 角落里或者整页都飘着水印 💧
- 需要把关键词、日期一次性改好 📝
- 还有合并、拆分、压缩这种高频操作 📎
在线工具嘛,要么限制页数,要么担心隐私;Adobe 又太重太贵。
于是我干脆自己写了一个 PDF 全自动批量处理工具箱,Python + 桌面 GUI,本机跑,不连网,敏感文件完全不出电脑。
可以多文件排队、勾选组合功能、后台默默干活,非常适合批量处理合同、扫描件、报告之类的。

🛠️ 工具能干啥?13 项功能一览
我把功能按三大类排好,勾选后会按固定的流水线顺序自动执行:
先去水印/解密,再做文字编辑,最后是加密、压缩这些收尾动作。
💧 一、水印与背景清理(4 项)
这里原本有图示,我直接列一下功能:
✏️ 二、文字编辑(4 项)
可以批量改字、改日期、统一页眉页脚:
🔐 三、权限与格式(5 项)
最后阶段搞权限、合并拆分和压缩:
🖥️ 界面 & 使用(3 分钟上手)
桌面程序长这样,采用了 三栏布局,套了个 ttkbootstrap 主题,颜值还行吧 😎
- 左边 👈:添加 PDF 文件/文件夹,支持拖放。还可以点「扫描第一个文件」预览前 10 页里所有文字块(字号、颜色、倾斜、内容),方便你去配置水印关键词。
- 中间 🎛️:按分类勾选要用的功能,填上参数(替换词、密码、压缩质量、拆分页数、F12 的关键词标签等等)。
-
右边 📋:实时日志滚动 + 进度条,跑起来心里有数。处理完的文件都在
./output目录,临时文件扔./temp,不乱。
典型流程就三步:
- 加文件
- 勾选需要功能,把参数填好
- 点「开始处理」
1.
⚠️ 注意:如果你勾了「合并」且选了多个文件,程序会走专门的合并逻辑;其他情况下,功能会按流水线对每个文件串行叠加,上一步的输出就是下一步的输入,非常顺畅。
⚙️ 技术实现:为啥要用“多库组合”?
单一一个库真的很难同时搞定「改结构 + 精确定位文字 + 区域涂抹」这些场景,所以我让几个库分工合作:
pikepdf:负责底层 PDF 结构修改,比如解密、加密、删除图层、改属性。pdfplumber:专门做文字提取和定位,拿颜色、字号、坐标,精准找到要替换的词或水印位置。PyMuPDF(fitz):用来做页面级的渲染清理、删除大矩形、涂抹区域等,补足前两个库的短板。reportlab:生成替换后的新文字层或页眉页脚。-
Pillow:处理图像类的底纹、扫描件背景。
流水线设计(run_pipeline):
- 按照固定的
EXEC_ORDER顺序跑你勾选的功能。 - 每一步成功就写出临时 PDF,最后复制到 output 文件夹。
- 某一步如果失败,会记日志但尽量不中断整批,稳稳的。
-
F11 拆分后会单独输出到一个目录,不会和单文件最终复制逻辑冲突。
全部在本地跑,不依赖任何云服务,特别适合处理那些不想外传的文档。
🐍 环境 & 运行
依赖我都写在脚本头部注释了,直接 pip 一把梭:
pip install ttkbootstrap pikepdf pdfplumber reportlab pillow PyMuPDF
如果需要拖放功能(把文件直接拽到窗口里),再装一个:
pip install tkinterdnd2
然后运行:
python pdf-tools-v5.py
首次运行会自动帮你建好 output 和 temp 两个目录,省心~
💡 几个实用小细节
- 🔍 F12 预览:扫描第一个文件时,会把“字号超大、倾斜、不是纯黑”的文本标成「特殊」,跟正文区分开,避免你把水印词配置错。
- 🎨 F1 保留颜色:替换文字时会从字符级读取原来的 RGB / 灰度,这样改完字不会全变成黑色,保持原来配色。
- 🧹 F5 多层清理:不光是删图层,连注释、表单、内容流里藏的大矩形都一起干掉,对付复杂盖章 PDF 特别有效。
- 🍎 macOS 兼容:Checkbutton 用了字符串
bootstyle,避免某些 Mac 系统崩溃。 - 🧵 后台线程 + 日志队列:界面不卡死,处理大批量文件时也能看到实时进度和每一步的日志,心里有底。
1.
🎯 适用场景 & 一点注意
👉 适合这些活儿:
基本上法务、行政、运维、开发小伙伴都会用得到,所有操作都在本地完成,不担心泄密。
📣 小结
pdf-tools-v5.py 这个小工具,把 解密 → 去水印/底纹 → 改字/页眉页脚 → 加密/压缩/合并拆分 这一整条链都收进了一个桌面工具箱里。
用 pikepdf + pdfplumber + PyMuPDF 组合拳,解决了“结构编辑”和“文字精确定位”两大难题。
如果你想二次开发,照着 process_F1~process_F13 和 FUNC_MAP 往里面加新功能就行,流水线顺序在 EXEC_ORDER 里随便调,扩展起来很方便~
需要源码或者想自己改着玩的话,评论区告诉我,我整理下放出来 😄
更多推荐



所有评论(0)