技能教程 · TUTORIAL
PDF 批量处理 · 详细教程
纯本地批量处理 PDF:合并、拆分、重排、旋转、抽文字、瘦身。零依赖、不上传、不联网。
这是什么
pdf-tools 是一个跑在你自己机器上的 PDF 批处理工具。它能做的都是页面级操作:把一堆文件合成一个、按页拆开、调顺序、转正扫描件、抽正文、压小体积。不联网、不上传、不调用任何 API,文件只在你本地动。
适合谁 / 不适合谁
- ✅ 要在本地批量整理 PDF:几十个文件合成一个、按页拆开、调顺序、转正扫描件、抽正文、压小体积。
- ❌ 不是在线工具,没有网页入口;不编辑 PDF 里的文字内容(那是排版/重做)。
- ❌ 扫描件 / 图片型 PDF 抽不出文字(那是 OCR,本工具不做)。
怎么部署
- 下载解压:点页面顶部的「下载 …」拿到 zip,解压得到一个
pdf-tools/文件夹(里面是SKILL.md和scripts/)。 - 装进 AI 助手:把整个
pdf-tools/文件夹放进你所用助手的 skills 目录,助手就能自动发现它 ——
- WorkBuddy / CodeBuddy(用户级):
~/.workbuddy/skills/pdf-tools/,Windows 上是C://Users//<你的用户名>//.workbuddy//skills//pdf-tools//; - 只想在某个项目里用:
<项目目录>/.workbuddy/skills/pdf-tools/。
- 装依赖:唯一依赖是一个纯 Python 库,不需要任何 Key:
pip install pypdf
- 用起来:直接跟助手说要做什么(例:「把这几个 PDF 合并成一个」),它会调用;想手动跑也行:
python scripts/pdf.py --help
用法
通用格式:
python pdf.py <子命令> [参数]
info — 看文件信息
python pdf.py info 报告.pdf
# 页数 / 大小 / 是否加密 / 标题作者等元信息
merge — 合并
python pdf.py merge 1.pdf 2.pdf 3.pdf -o 合集.pdf
python pdf.py merge --dir ./待合并 # 合并目录里全部 .pdf(按文件名排序)
split — 拆分
python pdf.py split 大文件.pdf --by 1 # 每 1 页拆一个
python pdf.py split 大文件.pdf --by 5 # 每 5 页拆一个
python pdf.py split 大文件.pdf --pages 1-3,5,7-9 # 抽出指定页成一个新文件
python pdf.py split 书.pdf --by-bookmark # 按顶层书签拆(书签缺失会报错)
# 默认输出到源文件同目录,文件名自动加 _01 _02 ...
reorder — 重排页面
python pdf.py reorder 文档.pdf --order 3,1,2 -o 新.pdf
# 必须包含 1..N 每个页码恰好一次
rotate — 旋转
python pdf.py rotate 扫描件.pdf --angle 90 # 全部转 90°
python pdf.py rotate 扫描件.pdf --angle 180 --pages 1-3 # 只转前 3 页
extract-text — 抽文字
python pdf.py extract-text 合同.pdf # 打印全部正文
python pdf.py extract-text 合同.pdf --pages 1-3 -o 正文.txt # 抽前 3 页写文件
# 尽力而为:原生文字层能抽;扫描件/图片型抽不出
compress — 瘦身
python pdf.py compress 胖文件.pdf -o 瘦文件.pdf
# 清除元数据 + 重新编码,通常能小一些;压不动说明源文件已较紧凑
已知边界(如实说,不吹)
- 只动页面级结构(增删 / 排序 / 旋转 / 抽字 / 重编码),不修改页面内的文字内容。
- 抽文字依赖 PDF 自带的文字层;扫描件、图片型 PDF 抽不出(需要 OCR,本工具不含)。
compress是尽力而为,压缩率看源文件;要更狠的压缩(如图片重采样)得另外定制。- 输出绝不覆盖输入文件:merge / split 自动起新名,compress / reorder / rotate 必须
-o且不能与输入同名,否则报错。 - 合并 / 拆分大文件时注意磁盘空间;加密 PDF 需先解密才能处理。
想要加功能
包里目前是 SKILL.md + scripts/pdf.py。想加页眉页脚、图片型 PDF 的 OCR、指定页加水印、PDF↔图片、表单填充等 → 用页面底部的联系方式找我,说清场景,我帮你做。