名称: 文档-pdf 描述: 从PDF提取文本/表格,创建格式化PDF,合并/拆分/旋转,处理表单和元数据。支持pdf-lib/pdfkit (Node.js) 和 pypdf/pdfplumber/ReportLab (Python)。
文档PDF技能 — 快速参考
此技能支持PDF的创建、提取、操作和分析。Claude应在用户需要生成发票、报告、从PDF提取数据、合并文档或处理PDF表单时应用这些模式。
现代最佳实践(2026年1月):
- PDF是发布产物,而非可编辑的真实源。
- 验证导出保真度(字体、图像、链接)和在需要时的可访问性。
- 可访问性:如果合规重要,优先采用标记/结构化PDF工作流(通常与PDF/UA对齐)并使用工具验证。
- 欧盟分发:EAA(2025年6月)通常暗示对面向客户的PDF有EN 301 549期望。
- 将PDF视为敏感文件:清除元数据,确保真实编辑,并控制分发。
核心决策规则(2026)
- 首先决定:原生数字PDF(可选文本)与扫描PDF(图像)。扫描PDF通常需要OCR;参见
references/pdf-extraction-patterns.md。 - 如果用户需要可访问性/合规性,优先从支持结构的源格式(DOCX/HTML + 适当导出)生成,而不是“后修复”未标记的PDF。
- 对于确定性操作(合并/拆分/旋转/清除),优先使用
scripts/助手而不是重新实现临时方案。 - 绝不要将黑色矩形或覆盖视为编辑;使用真实编辑并通过复制/粘贴 + 搜索验证。
快速参考
| 任务 | 工具/库 | 语言 | 使用时机 |
|---|---|---|---|
| 创建PDF | pdfkit | Node.js | 报告、发票、证书 |
| 创建PDF | ReportLab | Python | 复杂布局、表格 |
| 创建PDF | FPDF2 | Python | 支持Unicode的简单PDF |
| 创建PDF | Borb | Python | 交互元素、纯Python |
| 编辑PDF | pdf-lib | Node.js | 修改现有PDF、添加页面 |
| 提取文本 | pdfplumber | Python | 无需OCR的文本提取 |
| OCR扫描PDF | PyMuPDF + Tesseract | Python | 扫描PDF(无可选文本) |
| 提取表格 | Camelot | Python | 带边框表格(Lattice模式) |
| 提取表格 | Camelot/Tabula | Python | 无边框表格(Stream模式) |
| 解析/合并/拆分/旋转 | pypdf | Python | 确定性PDF操作 |
| 填充表单 | pdf-lib | Node.js | 表单自动化 |
| HTML转PDF | Puppeteer/Playwright | Node.js | 高保真网页渲染 |
| HTML转PDF | WeasyPrint | Python | 基于CSS3,无需浏览器 |
何时使用此技能
Claude应在用户请求以下内容时调用此技能:
- 从数据生成PDF(发票、报告、证书)
- 从现有PDF提取文本或表格
- 合并多个PDF为一个文档
- 拆分PDF为单独文件
- 以编程方式填充PDF表单
- 添加水印、页眉、页脚
- 将HTML/网页转换为PDF
默认工作流程
- 创建:选择
pdfkit(Node)或ReportLab(Python),从assets/invoice-template.md或assets/report-template.md开始;对于高级布局使用references/pdf-generation-patterns.md。 - 提取:使用
references/pdf-extraction-patterns.md(文本/表格/图像/元数据 + OCR回退)。 - 交付:运行
assets/pdf-release-checklist.md(保真度、链接、可访问性基线、隐私)。
脚本(确定性操作)
脚本是可选的助手;它们假设Python 3加上每个文件中列出的依赖项。
- 合并:
python3 scripts/merge_pdfs.py merged.pdf a.pdf b.pdf - 拆分:
python3 scripts/split_pdf.py in.pdf out_dir --each-page - 旋转:
python3 scripts/rotate_pdf.py in.pdf out.pdf --degrees 90 - 清除元数据:
python3 scripts/scrub_metadata.py in.pdf out.pdf
PDF结构模式
发票模板
发票结构
├── 页眉(徽标、公司信息、发票编号)
├── 账单地址/发货地址块
├── 行项目表
│ ├── 描述 | 数量 | 单价 | 总计
│ └── 小计、税费、总计
├── 付款条款
└── 页脚(联系信息、致谢)
报告模板
报告PDF结构
├── 封面页(标题、作者、日期)
├── 目录
├── 带有页码的主体部分
├── 带有标题的图表/图像
├── 附录
└── 运行页眉/页脚
决策树
PDF任务:[您需要什么?]
├─ 创建新PDF?
│ ├─ 简单文本/表格 → pdfkit(Node)或ReportLab(Python)
│ ├─ 复杂布局 → ReportLab与Platypus
│ └─ 从HTML → Puppeteer或wkhtmltopdf
│
├─ 从PDF提取?
│ ├─ 仅文本 → pdfplumber(Python)
│ ├─ 表格 → pdfplumber或camelot(Python)
│ └─ 图像 → PyMuPDF/fitz(Python)
│
├─ 修改现有PDF?
│ ├─ 添加文本/图像 → pdf-lib(Node)
│ ├─ 合并/拆分 → pypdf或pdf-lib
│ └─ 填充表单 → pdf-lib
│
└─ 批量处理?
└─ pypdf + pdfplumber管道
做 / 避免(2026年1月)
做
- 保留版本控制的源文档(doc/幻灯片/设计文件)与PDF一起。
- 验证长文档的链接和阅读顺序。
- 使用真实编辑并通过复制/粘贴测试。
避免
- 当存在源文档时,将PDF作为主要工作流编辑。
- 分发带有损坏链接或难以辨认图表的PDF。
- 在未经明确批准的情况下在PDF中包含客户PII或机密信息。
良好标准
- 保真度:从版本控制的源文件(doc/幻灯片/设计)导出可重现,在不同查看器中看起来相同。
- 可访问性:标记/阅读顺序正确;链接有效;扫描文档在适当时进行OCR。
- 发布卫生:文件命名包含版本/日期;元数据干净;无“PDF作为真实源”。
- 安全性:编辑已验证(复制/粘贴测试)并最小化敏感数据。
- QA:使用
assets/pdf-release-checklist.md完成发布检查表。
可选:AI / 自动化
仅在明确请求且符合政策时使用。
- 生成发布检查表运行;人工手动验证最终PDF。
导航
资源
- references/pdf-generation-patterns.md — 复杂布局、多页文档
- references/pdf-extraction-patterns.md — 文本、表格、图像提取
- data/sources.json — 库文档链接
模板
- assets/invoice-template.md — 发票PDF生成
- assets/report-template.md — 多页报告结构
- assets/pdf-release-checklist.md — 链接、可访问性、导出保真度
相关技能
- …/document-docx/SKILL.md — Word文档生成
- …/document-xlsx/SKILL.md — Excel/电子表格工作流
- …/document-pptx/SKILL.md — PowerPoint演示