PDF 工具箱 · 合并拆分压缩水印
本地 PDF 批处理,一条命令搞定。
这是什么
日常最常碰到的 5 个 PDF 机械操作,全部打包成本地命令,内容不出本机:
| 命令 | 干什么 | 示例 |
|---|---|---|
merge |
按顺序合并多份 PDF | python3 pdf_toolbox.py merge a.pdf b.pdf -o 合并.pdf |
split |
按范围/每 N 页拆分 | python3 pdf_toolbox.py split 大.pdf -r 1-5 8 -o 输出目录/ |
compress |
压缩瘦身 | python3 pdf_toolbox.py compress 大.pdf -o 小.pdf |
watermark |
加草稿/机密水印 | python3 pdf_toolbox.py watermark 报告.pdf -o w.pdf -k confidential |
pagenum |
加页码 | python3 pdf_toolbox.py pagenum 报告.pdf -o p.pdf --fmt "{n} / {total}" |
encrypt |
AES-256 加密(默认只读权限) | python3 pdf_toolbox.py encrypt 报告.pdf -o e.pdf -p 你的密码 |
decrypt |
解密(需正确密码) | python3 pdf_toolbox.py decrypt e.pdf -o 报告.pdf -p 你的密码 |
rotate |
旋转页面(90/180/270°) | python3 pdf_toolbox.py rotate 横向.pdf -o 竖向.pdf -a 90 |
check |
健康检查 / 修复 | python3 pdf_toolbox.py check 大.pdf(加 -f 修复) |
info |
看页数/元信息 | python3 pdf_toolbox.py info 报告.pdf |
demo |
离线演示(虚构样本) | python3 pdf_toolbox.py demo |
什么时候用
- 要把几份 PDF 合成一份(合同 + 附件 + 报价单)
- 一份 PDF 太大发不出去,压缩一下
- 对外发文件前加 DRAFT/CONFIDENTIAL 水印
- 打印/归档要统一页码
- 只要某一份 PDF 的其中几页(拆出来发)
依赖与兼容
- 需要 Python 3.9+,两个纯本地库:
pip3 install pypdf reportlab - 缺库时每条命令会明确提示安装,不会假装成功
- 看图压缩效果更佳可加装
pip3 install pikepdf(脚本自动识别并切换强压缩) - 兼容 macOS / Linux / Windows
快速上手
cd scripts
# 1) 先跑一遍离线演示,看全流程效果
python3 pdf_toolbox.py demo
# 2) 合并
python3 pdf_toolbox.py merge 合同.pdf 附件.pdf 报价单.pdf -o 全部.pdf
# 3) 只要前 2 页和 8 页
python3 pdf_toolbox.py split 全部.pdf -r 1-2 8 -o ./拆出
# 4) 压缩
python3 pdf_toolbox.py compress 全部.pdf -o 全部-压缩.pdf
# 5) 对外发前加水印
python3 pdf_toolbox.py watermark 全部-压缩.pdf -o 对外版.pdf -k confidential
# 6) 加页码
python3 pdf_toolbox.py pagenum 对外版.pdf -o 最终.pdf --fmt "第 {n} 页 / 共 {total} 页"
# 7) 涉密文件加密(默认只读,防打印复制)
python3 pdf_toolbox.py encrypt 最终.pdf -o 涉密版.pdf -p 你的密码
# 8) 收到加密文件后解密
python3 pdf_toolbox.py decrypt 涉密版.pdf -o 还原.pdf -p 你的密码
# 9) 手机拍的横版 PDF 转正
python3 pdf_toolbox.py rotate 横版.pdf -o 正版.pdf -a 90
# 10) 收到可疑 PDF 先体检
python3 pdf_toolbox.py check 来源不明.pdf
细节参数
| 参数 | 说明 |
|---|---|
split -r "1-5" "8" "10-12" |
任意混合页码范围 |
split -e 2 |
每 2 页拆一个文件 |
watermark -k draft/confidential/sample/custom |
内置四种水印文字;custom 配合 -t 文字 |
watermark --font-size 80 --opacity 0.15 |
调字号与透明度 |
pagenum --pos top-center |
六种位置之一 |
pagenum --start 3 |
从第 3 页开始编号 |
encrypt --loose |
宽松权限(允许打印复制;默认只读) |
rotate --pages 1-3,5,8 |
只旋转指定页 |
check -f |
修复(重写去重+压缩流) |
安全与隐私
- 零网络:脚本不含任何 HTTP 请求,PDF 内容一个字节都不出本机
- 水印/页码在临时目录生成透明叠加层,用完即删
demo只造虚构样张,绝不动真实文件