pdf-processing-toolkitlisted
Install: claude install-skill findscripter/everything-skills
## 何时使用
适用:
- 合并多份 PDF、拆分为单页、旋转页面、重排页。
- 提取正文文本(含保留版面)、抽取表格导出为 DataFrame/Excel。
- 从零生成 PDF(文本、表格、多页报告)。
- 加水印、设密码加密、解密去密码、抽取内嵌图片。
- 扫描件/纯图 PDF 走 OCR 转可检索文本。
不该用的边界:
- 填写已有 AcroForm/XFA 表单字段(勾选框、文本框、下拉)→ 用 `pdf-form-filler`,本技能不覆盖表单字段写入。
- 需要像素级版式还原的复杂排版生成(杂志/手册)→ reportlab 适合结构化文档,重设计稿应改用专业排版工具。
- 纯文本/Markdown 落地为 Word/PPT → 用 `markdown-to-docx` 等排版技能。
## 步骤 / 指令
1. 先判类型:可选文本 PDF 还是扫描件?`pdftotext input.pdf -` 若几乎无文本则视为扫描件,转 OCR 流程。
2. 选工具:拆分/合并/旋转/加密 → `pypdf` 或命令行 `qpdf`;提取文本/表格 → `pdfplumber`;生成 → `reportlab`;OCR → `pdf2image`+`pytesseract`。简单批处理优先命令行(更快、无需写脚本)。
3. 执行操作(见示例),始终输出到新文件,不覆盖源 PDF。
4. 校验:处理后复读页数/关键文本,表格抽取后检查行列对齐与表头。
5. 加密/解密前确认有权限处理该文档。
## 示例
合并 / 拆分(pypdf):
```python
from pypdf import PdfReader, PdfWriter
# 合并
writer = PdfWriter()
for f in ["doc1.pdf", "doc2.pdf"]:
for page in PdfReader(f).pages:
writer.add_page(page)
with open("merged.pdf", "wb") as out:
writer.write(out)
# 拆分为单页
reader = PdfReader("input.pdf")
for i, page in enumerate(reader.pages):
w = PdfWriter(); w.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as out:
w.write(out)
```
旋转 / 加密(pypdf):
```python
page = reader.pages[0]; page.rotate(90) # 顺时针 90°
writer.encrypt("userpwd", "ownerpwd") # 设密码
```
提取表格 → Excel(pdfplumber):
```python
import pdfplumber, pandas as pd
dfs = []
with pdfplumber.open("document.pdf") as pdf:
for page in pdf.pages:
for t in page.extract_tables():
if t:
dfs.append(pd.DataFrame(t