pdf-toolkit 技能包
> PDF 合并 / 拆分 / 提取图片 / 旋转 / 加水印,本地零 token 完成
⚡ 核心能力
| 功能 | 命令 | 说明 |
|---|---|---|
| 提取文字 | extract |
按页码提取文字(支持范围) |
| 合并 | merge |
多个 PDF 合并为 1 个 |
| 拆分 | split |
按页码范围提取页面 |
| 渲染JPG | jpg |
将PDF指定页面逐页渲染为JPG图片(支持页码范围) |
| 翻页视频 | video |
漫画PDF翻页视频:每页停留N秒,合成MP4(需moviepy) |
| 翻页GIF | gif |
PDF翻页GIF(服务器降级方案,无需moviepy) |
| 提取图片 | images |
提取PDF中嵌入的原始图片 |
| 旋转 | rotate |
90°/180°/270° 旋转指定页面 |
| 加水印 | watermark |
文字水印 或 图片水印 |
🔧 技术方案
核心工具:Ghostscript(系统已安装)+ PyMuPDF + 可选 moviepy
- 合并/拆分/图片提取:用 GS 直接调用
- 旋转/加水印:用 PyMuPDF(需 pip install)
- 不花 1 个 token,全部本地处理
🚀 快速使用
1. 提取文字(新增!)
# 提取全部文字
python3 pdf-toolkit.py extract input.pdf
# 提取第1-3页
python3 pdf-toolkit.py extract input.pdf 1-3
# 提取第1页、第5页、第10-12页
python3 pdf-toolkit.py extract input.pdf 1,5,10-12
# 提取并保存到文件
python3 pdf-toolkit.py extract input.pdf 1-3 -o chapter1.txt
2. 合并 PDF
# 合并多个文件
# 合并多个文件
python3 pdf-toolkit.py merge a.pdf b.pdf c.pdf -o merged.pdf
# 支持通配符(文件夹内所有 PDF)
python3 pdf-toolkit.py merge ./*.pdf -o all.pdf
3. 拆分 PDF
# 按范围提取(1-5页,第7页,第10-12页)
python3 pdf-toolkit.py split input.pdf -p 1-5,7,10-12 -o outdir/
# 拆成全部单页(需要 PyMuPDF)
python3 pdf-toolkit.py split input.pdf -o outdir/
8. 渲染 JPG
# 全部页面转为JPG
python3 pdf-toolkit.py jpg input.pdf -o outdir/
# 指定页面(1-3页,第5页,第7-9页)
python3 pdf-toolkit.py jpg input.pdf -p 1-3,5,7-9 -o outdir/
# 高清模式(200 DPI,质量 90)
python3 pdf-toolkit.py jpg input.pdf --dpi 200 -q 90 -o outdir/
# 省空间模式(72 DPI)
python3 pdf-toolkit.py jpg input.pdf --dpi 72 -q 70 -o outdir/
参数说明:
| 参数 | 说明 | 默认值 |
|------|------|--------|
| -p --pages | 页码范围,如 1-3,5,7-9 | all |
| --dpi | 图片分辨率,越高质量越好 | 150 |
| -q --quality | JPG 质量 1-100 | 85 |
> ⚠️ images = 提取PDF里嵌入的图片(原始图片)<br>
> jpg = 把每一页渲染成图片(页面截图)
7.5 翻页GIF(服务器降级方案)
> 服务器环境无法安装 moviepy/ffmpeg 时,可用此命令生成GIF替代MP4。
# 漫画竖屏:270度旋转,每帧1.2秒
python3 pdf2gif.py 卷1.pdf -r 270 -s 1.2 -o comic.gif
# 指定页码范围
python3 pdf2gif.py input.pdf -p 1-5,10,15-20 -s 1.0 -r 270 -o out.gif
| 参数 | 说明 | 默认值 |
|---|---|---|
-o --output |
输出GIF路径 | PDF同名.gif |
-p --pages |
页码范围 | all |
-s --seconds |
每帧停留秒数 | 1.0 |
-r --rotate |
旋转角度:0/90/180/270 | 0 |
-d --dpi |
渲染分辨率 | 150 |
> ⚠️ 依赖:pip install pymupdf pillow(比moviepy轻量,几乎所有环境都支持)
> GIF体积约比MP4大10-20倍,建议仅用于预览或小数量页面
7. 翻页视频(漫画/相册转MP4)
# 把漫画PDF做成翻页视频,每页停1.5秒
python3 pdf-toolkit.py video 卷1.pdf -s 1.5 -w 1200 -o comic.mp4
# 高清模式(150DPI,宽度1920px,快放0.8秒/页)
python3 pdf-toolkit.py video input.pdf --dpi 150 -w 1920 -s 0.8 -o hd.mp4
# 指定页码范围(第1-10页,第20页)
python3 pdf-toolkit.py video input.pdf -p 1-10,20 -s 1.0 -o out.mp4
| 参数 | 说明 | 默认值 |
|---|---|---|
| 输出MP4路径 | PDF同名.mp4 | |
| 每页停留秒数(控制播放速度) | 1.0 | |
页码范围,如 1-3,5,7-9 |
all | |
--dpi |
渲染分辨率,越高越清晰 | 110 |
-w --width |
输出视频宽度px,等比缩放(0=原尺寸) | 0 |
--fps |
输出帧率 | 24 |
🧩 依赖说明
| 命令 | 依赖包 | 安装命令 |
|---|---|---|
| extract / split / jpg / rotate / watermark | pymupdf | pip install pymupdf |
| merge / images | ghostscript | 系统已安装 |
| video | moviepy + pymupdf | pip install moviepy pymupdf |
| gif(降级方案) | pymupdf + pillow | pip install pymupdf pillow |
降级策略:如果moviepy安装失败,用pdf2gif.py生成GIF替代,功能相同但文件稍大。
> ⚠️ 需要额外安装:pip install moviepy pymupdf(moviepy约50MB,100页漫画约500MB内存)
> > 💡 服务器环境无法安装moviepy时,改用 gif 命令(pdf2gif.py)生成GIF,效果相同
5. 旋转页面
# 旋转 90°(默认)
python3 pdf-toolkit.py rotate input.pdf -o rotated.pdf
# 指定页码和角度
python3 pdf-toolkit.py rotate input.pdf -a 180 -p 1-3,5 -o rotated.pdf
6. 加水印
# 文字水印(默认灰色斜向"机密")
python3 pdf-toolkit.py watermark input.pdf -t "机密文件" -o marked.pdf
# 自定义样式
python3 pdf-toolkit.py watermark input.pdf -t "CONFIDENTIAL" \
--color "0.8,0.2,0.2" --alpha 0.2 --size 60 --wangle 45 \
-o marked.pdf
# 图片水印(居中铺满,透明度 0.2)
python3 pdf-toolkit.py watermark input.pdf -i logo.png --alpha 0.2 --scale 0.6 \
-o marked.pdf
📐 加水印参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
--color |
文字颜色(R,G,B 或灰度 0-1) | 0.7(浅灰) |
--alpha |
透明度 0-1 | 0.3 |
--size |
文字大小 | 40 |
--wangle |
文字旋转角度 | 45° |
--scale |
图片水印相对页面比例 | 0.5 |
⚠️ 已知限制
- 去水印:不支持(图片水印嵌入内容层,无法干净移除)
- PDF转WORD:不支持(建议用 LibreOffice / pandoc)
- 拆分全部单页:需要 PyMuPDF(否则用
-p指定范围) - 旋转 + 加水印组合:可分两步完成
🧪 安装依赖(如果需要)
# 系统 pip(可能需要 --break-system-packages)
pip install pymupdf
# 或用 venv
python3 -m venv venv && venv/bin/pip install pymupdf
📁 文件结构
pdf-toolkit/
├── SKILL.md # 本文件
├── pdf-toolkit.py # 主工具(7大命令)
└── pdf-batch.py # 批量操作
💡 设计理念
> 本地优先:能用系统工具/Ghostscript 搞定的,绝不花 token
版本:v1.1(2026-07-25)新增 jpg 渲染命令