name: pdf-skill description: 使用PDFKit、PDF.js和Puppeteer等工具生成、解析和操作PDF文档的专家。适用于创建PDF、提取内容、合并文档或填写表单。触发词包括“PDF”、“生成PDF”、“解析PDF”、“提取PDF”、“合并PDF”、“PDF表单”、“PDFKit”。
PDF技能
目的
提供程序化PDF生成、解析和操作的专业知识。专长于使用PDFKit、PDF.js、Puppeteer及类似工具从头创建PDF、提取内容、合并/拆分文档以及处理表单。
使用场景
- 程序化生成PDF
- 从PDF中提取文本或数据
- 合并或拆分PDF文档
- 程序化填写PDF表单
- 将HTML转换为PDF
- 添加水印或注释
- 解析PDF结构和元数据
- 构建PDF报告生成器
快速开始
在以下情况调用此技能:
- 从代码或数据生成PDF
- 从PDF文件中提取内容
- 合并、拆分或操作PDF
- 填写或创建PDF表单
- 将HTML/网页转换为PDF
不要在以下情况调用:
- Word文档创建 → 使用
/docx-skill - Excel/电子表格处理 → 使用
/xlsx-skill - PowerPoint创建 → 使用
/pptx-skill - 常规文件操作 → 使用Bash或文件工具
决策框架
PDF操作?
├── 从头生成
│ ├── 简单 → PDFKit (Node) / ReportLab (Python)
│ └── 复杂布局 → Puppeteer/Playwright + HTML
├── 解析/提取
│ ├── 文本提取 → pdf-parse / PyPDF2
│ └── 表格提取 → Camelot / Tabula
├── 操作
│ └── pdf-lib (合并、拆分、编辑)
└── 表单
└── pdf-lib (填写) / PDFtk (高级)
核心工作流
1. 使用PDFKit生成PDF
- 安装PDFKit (
npm install pdfkit) - 创建新的PDDocument
- 添加内容(文本、图像、图形)
- 使用字体和颜色进行样式设置
- 根据需要添加页面
- 输出到文件或响应流
2. HTML转PDF转换
- 设置Puppeteer/Playwright
- 导航到HTML内容或URL
- 配置页面大小和边距
- 设置打印选项(页眉、页脚)
- 生成PDF缓冲区
- 保存或流式传输结果
3. PDF解析与提取
- 选择解析器(pdf-parse、PyPDF2、pdfplumber)
- 加载PDF文件
- 提取文本或结构化数据
- 处理多页文档
- 清理和规范化提取的文本
- 以所需格式输出
最佳实践
- 尽可能使用矢量图形而非位图
- 嵌入字体以确保渲染一致性
- 在不同阅读器中测试PDF输出
- 使用流式处理处理大型PDF
- 根据任务复杂度选择合适的库
- 考虑可访问性(标记PDF)
反模式
| 反模式 | 问题 | 正确方法 |
|---|---|---|
| 仅图像的PDF | 不可搜索/不可访问 | 使用带字体的文本 |
| 不嵌入字体 | 渲染问题 | 嵌入所需字体 |
| 内存加载大型PDF | 崩溃 | 流式处理 |
| 忽略加密 | 安全/访问问题 | 处理加密PDF |
| 工具选择不当 | 过度工程化 | 根据复杂度匹配工具 |