ワンクリックで
pypdf
PDF 文件处理(Python 版)。使用 PyMuPDF 实现,内存效率高,适合处理大文件。用于读取、提取文本/表格/图片、合并、拆分、旋转、水印、加密/解密、页面渲染。当用户提到 .pdf 文件或需要操作 PDF 时触发。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
PDF 文件处理(Python 版)。使用 PyMuPDF 实现,内存效率高,适合处理大文件。用于读取、提取文本/表格/图片、合并、拆分、旋转、水印、加密/解密、页面渲染。当用户提到 .pdf 文件或需要操作 PDF 时触发。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
文件系统操作。⚠️读取前先调用info获取文件信息:图片用read_file(mode='data_url'),大文件用from/lines分块。
PowerPoint 演示文稿处理。用于读取现有 PPTX 基本信息、文本、表格、图表基础数据与备注,创建新演示文稿,并提取媒体文件。支持在新建演示文稿时添加文本、图片、表格、图表、形状、媒体与演讲者备注。当用户提到 .pptx 文件或需要操作 PowerPoint 时触发。
Excel 文件处理。用于读取、写入、编辑 .xlsx/.xls/.csv 文件,支持工作表管理、格式化、公式计算、数据查询和格式转换。当用户需要操作电子表格文件时触发。
发票专用解析技能。支持中国增值税发票、普通发票、电子发票的结构化提取。基于 pdfjs-dist 实现坐标提取,可提取发票号码、日期、买卖双方信息、商品明细、金额等字段。
PDF 文件处理。用于读取、提取文本/表格/图片、合并、拆分、旋转、水印、加密/解密、表单填写、页面渲染。当用户提到 .pdf 文件或需要操作 PDF 时触发。
Word 文档处理。用于读取、写入、编辑、模板填充 .docx 文件。支持页眉页脚、超链接、目录、图片操作。使用 Patcher API 保留原文档样式。当用户需要操作 Word 文档时触发。
SOC 職業分類に基づく
| name | pypdf |
| description | PDF 文件处理(Python 版)。使用 PyMuPDF 实现,内存效率高,适合处理大文件。用于读取、提取文本/表格/图片、合并、拆分、旋转、水印、加密/解密、页面渲染。当用户提到 .pdf 文件或需要操作 PDF 时触发。 |
| license | Proprietary. LICENSE.txt has complete terms |
| user-invocable | true |
| source_path | index.py |
| dependencies | {"python":["PyMuPDF>=1.23.0"]} |
依赖:PyMuPDF (fitz) - 内存高效的 PDF 处理库
优势:相比 Node.js 版
本技能提供 15 个独立工具,每个工具专注于单一功能:
| 工具 | 功能 | 核心参数 |
|---|---|---|
read_metadata | 读取 PDF 元数据 | path, parse_page_info |
extract_text | 提取文本内容 | path, from_page, to_page |
extract_tables | 提取表格数据 | path, from_page, to_page |
extract_images | 提取内嵌图片 | path, output_dir, from_page, to_page, threshold |
render_pages | 渲染页面为图片 | path, output_dir, from_page, to_page, scale |
to_markdown | 转换为 Markdown | path, from_page, to_page, output |
extract_to_markdown_with_images | 图文混编 PDF 转 Markdown | path, output_dir, from_page, to_page, threshold |
read_form_fields | 读取表单字段 | path |
| 工具 | 功能 | 核心参数 |
|---|---|---|
create_pdf | 创建新 PDF | output, content, title, page_size |
merge_pdfs | 合并多个 PDF | output, paths |
split_pdf | 拆分 PDF(内存高效) | path, output_dir, pages_per_file |
rotate_pages | 旋转指定页面 | path, output, pages, degrees |
encrypt_pdf | 加密 PDF | path, output, user_password |
decrypt_pdf | 解密 PDF | path, output, password |
add_watermark | 添加水印 | path, output, watermark, is_text |
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| parse_page_info | boolean | ❌ | 解析每页详细信息(默认: false) |
调用示例:
pypdf__read_metadata({ path: "doc.pdf" })
pypdf__read_metadata({ path: "doc.pdf", parse_page_info: true })
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| from_page | number | ❌ | 起始页(从1开始) |
| to_page | number | ❌ | 结束页(包含) |
调用示例:
// 提取全部文本
pypdf__extract_text({ path: "doc.pdf" })
// 提取第1-5页
pypdf__extract_text({ path: "doc.pdf", from_page: 1, to_page: 5 })
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| from_page | number | ❌ | 起始页(从1开始) |
| to_page | number | ❌ | 结束页(包含) |
调用示例:
pypdf__extract_tables({ path: "doc.pdf", from_page: 1, to_page: 3 })
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| output_dir | string | ✅ | 输出目录(相对于当前工作目录,图片保存到此目录) |
| from_page | number | ❌ | 起始页(从1开始) |
| to_page | number | ❌ | 结束页(包含) |
| threshold | number | ❌ | 图片最小尺寸阈值,像素(默认: 80) |
调用示例:
// 提取图片到目录(输出文件名自动使用 PDF 文件名作为前缀,如 doc-1.png, doc-2.png)
pypdf__extract_images({
path: "doc.pdf",
output_dir: "./extracted_images"
})
// 提取第1-5页的大图片
pypdf__extract_images({
path: "doc.pdf",
output_dir: "./images",
from_page: 1,
to_page: 5,
threshold: 200
})
注意事项:
output_dir 为必填参数,图片必须保存到文件(防止内存溢出)doc-1.png, doc-2.png参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| output_dir | string | ✅ | 输出目录(相对于当前工作目录,图片保存到此目录) |
| from_page | number | ❌ | 赯始页(从1开始) |
| to_page | number | ❌ | 结束页(包含) |
| scale | number | ❌ | 缩放比例(默认: 1.5,相当于 150 DPI) |
| desired_width | number | ❌ | 期望宽度(像素),设置后忽略 scale |
调用示例:
// 渲染所有页面到目录(输出文件名自动使用 PDF 文件名作为前缀,如 doc-1.png, doc-2.png)
pypdf__render_pages({
path: "doc.pdf",
output_dir: "./images",
scale: 1.5
})
// 渲染第1-3页,指定宽度
pypdf__render_pages({
path: "doc.pdf",
from_page: 1,
to_page: 3,
output_dir: "./thumbs",
desired_width: 800
})
注意事项:
output_dir 为必填参数,图片必须保存到文件(防止内存溢出)doc-1.png, doc-2.png参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| from_page | number | ❌ | 起始页(从1开始) |
| to_page | number | ❌ | 结束页(包含) |
| output | string | ❌ | 输出 markdown 文件路径 |
调用示例:
pypdf__to_markdown({ path: "doc.pdf", output: "doc.md" })
功能说明: 将图文混编的 PDF 转换为 Markdown 格式,同时提取图片并嵌入链接。适用于包含文字和图片混合排版的 PDF 文档。
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| output_dir | string | ✅ | 输出目录(相对于当前工作目录) |
| from_page | number | ❌ | 起始页(从1开始) |
| to_page | number | ❌ | 结束页(包含) |
| threshold | number | ❌ | 图片最小尺寸阈值,像素(默认: 80) |
输出结构:
output_dir/
├── {pdf_name}.md # Markdown 文件
└── images/
├── {pdf_name}-1.png
├── {pdf_name}-2.png
└── ...
调用示例:
// 转换图文混编 PDF
pypdf__extract_to_markdown_with_images({
path: "report.pdf",
output_dir: "./output"
})
// 转换指定页面
pypdf__extract_to_markdown_with_images({
path: "report.pdf",
output_dir: "./output",
from_page: 1,
to_page: 10,
threshold: 100
})
返回结果:
{
success: true,
markdown: "...", // Markdown 文本内容
markdown_file: "./output/report.md",
images_dir: "./output/images",
images: [...], // 图片信息列表
image_count: 5,
output_dir: "./output"
}
注意事项:
images/ 子目录参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
调用示例:
pypdf__read_form_fields({ path: "form.pdf" })
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| output | string | ✅ | 输出 PDF 文件路径 |
| content | string[] | ✅ | 文本内容数组(每项为一页) |
| title | string | ❌ | PDF 标题 |
| page_size | string | ❌ | 页面大小: "a4" 或 "letter"(默认: "a4") |
调用示例:
pypdf__create_pdf({
output: "new.pdf",
content: ["第一页内容", "第二页内容"],
title: "我的文档",
page_size: "a4"
})
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| output | string | ✅ | 输出 PDF 文件路径 |
| paths | string[] | ✅ | 要合并的 PDF 文件路径数组(至少2个) |
调用示例:
pypdf__merge_pdfs({
output: "merged.pdf",
paths: ["a.pdf", "b.pdf", "c.pdf"]
})
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| output_dir | string | ✅ | 输出目录(相对于当前工作目录) |
| pages_per_file | number | ❌ | 每个文件的页数(默认: 1) |
调用示例:
// 拆分为单页文件(输出文件名自动使用 PDF 文件名作为前缀,如 large-1.pdf, large-2.pdf)
pypdf__split_pdf({
path: "large.pdf",
output_dir: "./split"
})
// 每10页一个文件(输出如 large-1-10.pdf, large-11-20.pdf)
pypdf__split_pdf({
path: "large.pdf",
output_dir: "./chunks",
pages_per_file: 10
})
注意事项:
{pdf_name}-{page}.pdf,如 doc-1.pdf{pdf_name}-{start}-{end}.pdf,如 doc-1-10.pdf参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| output | string | ✅ | 输出 PDF 文件路径 |
| pages | number[] | ❌ | 要旋转的页码(从1开始,空则旋转所有) |
| degrees | number | ❌ | 旋转角度: 90, 180, 270(默认: 90) |
调用示例:
// 旋转所有页面90度
pypdf__rotate_pages({
path: "doc.pdf",
output: "rotated.pdf",
degrees: 90
})
// 旋转指定页面180度
pypdf__rotate_pages({
path: "doc.pdf",
output: "rotated.pdf",
pages: [1, 3, 5],
degrees: 180
})
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| output | string | ✅ | 输出 PDF 文件路径 |
| user_password | string | ✅ | 打开 PDF 的密码 |
| owner_password | string | ❌ | 编辑密码(默认使用 user_password) |
调用示例:
pypdf__encrypt_pdf({
path: "doc.pdf",
output: "encrypted.pdf",
user_password: "secret123"
})
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| output | string | ✅ | 输出 PDF 文件路径 |
| password | string | ✅ | 当前密码 |
调用示例:
pypdf__decrypt_pdf({
path: "encrypted.pdf",
output: "decrypted.pdf",
password: "secret123"
})
参数:
| 参数 | 类型 | 必需 | 描述 |
|---|---|---|---|
| path | string | ✅ | PDF 文件路径 |
| output | string | ✅ | 输出 PDF 文件路径 |
| watermark | string | ✅ | 水印文本或水印 PDF 路径 |
| is_text | boolean | ❌ | true 为文本水印,false 为 PDF 路径(默认: true) |
调用示例:
// 添加文本水印
pypdf__add_watermark({
path: "doc.pdf",
output: "watermarked.pdf",
watermark: "CONFIDENTIAL",
is_text: true
})
// 添加 PDF 水印
pypdf__add_watermark({
path: "doc.pdf",
output: "watermarked.pdf",
watermark: "stamp.pdf",
is_text: false
})