pdf-tools
PDF 文件处理 (Use when: 需要读取/合并/分割/转换 PDF,或从 PDF 提取文字/表格). NOT for: 网页内容抓取.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
PDF 文件处理 (Use when: 需要读取/合并/分割/转换 PDF,或从 PDF 提取文字/表格). NOT for: 网页内容抓取.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
浏览器自动化操作 (Use when: 需要交互式浏览网页、填写表单、点击按钮、翻页抓取动态内容). NOT for: 静态网页抓取(用 web_fetch)、文件下载(用 multimedia_download).
自主编程与代码开发 (Use when: 需要编写/修改/调试代码、创建项目、重构). NOT for: 数据分析、文件格式转换.
数据分析与可视化 (Use when: 需要处理 CSV/Excel 数据、生成图表、统计分析). NOT for: 非数据文件、GUI 操作.
开发辅助工具集 (Use when: 需要代码格式化/依赖管理/环境检测/进程管理/端口扫描). NOT for: 文件读写(用 FileSystem).
通过中国移动 139 邮箱发送邮件(支持附件、纯文本)。凭据已预配置,直接调用即可。
Git 版本控制操作 (Use when: 需要 clone/commit/push/diff/log 等 git 操作). NOT for: 非版本控制文件操作.
| name | pdf-tools |
| description | PDF 文件处理 (Use when: 需要读取/合并/分割/转换 PDF,或从 PDF 提取文字/表格). NOT for: 网页内容抓取. |
| metadata | {"rooster":{"emoji":"📄","platform":["any"],"category":"document","kits":["Office","FileSystem"],"requires":{"python_packages":["pypdf","pdfplumber"],"bins":[],"env_vars":[]}}} |
本技能提供处理 PDF 文件的最佳实践。
当需要从 PDF 文件中读取和提取所有可读文本时,必须优先调用 pdf_op 宏工具:
{
"name": "pdf_op",
"arguments": {
"action": "read",
"path": "C:\\path\\to\\document.pdf"
}
}
如果需要更高级的自定义提取(按页处理、条件提取),可以使用 pypdf 库:
from pypdf import PdfReader
pdf_path = r"C:\path\to\document.pdf"
reader = PdfReader(pdf_path)
for i, page in enumerate(reader.pages):
text = page.extract_text()
print(f"--- 第 {i+1} 页 ---")
print(text)
import pdfplumber
import pandas as pd
pdf_path = r"C:\path\to\report.pdf"
all_tables = []
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
tables = page.extract_tables()
for table in tables:
df = pd.DataFrame(table[1:], columns=table[0])
all_tables.append(df)
if all_tables:
result = pd.concat(all_tables, ignore_index=True)
output_path = r"C:\path\to\output.xlsx"
result.to_excel(output_path, index=False)
print(f"[RESULT_PATH: {output_path}]")
from pypdf import PdfWriter, PdfReader as _R
merger_pages = []
for path in [
r"C:\path\to\part1.pdf",
r"C:\path\to\part2.pdf",
r"C:\path\to\part3.pdf",
]:
reader = _R(path)
merger_pages.extend(reader.pages)
writer = PdfWriter()
for page in merger_pages:
writer.add_page(page)
output_path = r"C:\path\to\merged.pdf"
with open(output_path, "wb") as f:
writer.write(f)
print(f"[RESULT_PATH: {output_path}]")
from pypdf import PdfReader, PdfWriter
reader = PdfReader(r"C:\path\to\original.pdf")
writer = PdfWriter()
# 提取第 3-7 页(索引 2-6)
for page_num in range(2, 7):
writer.add_page(reader.pages[page_num])
output_path = r"C:\path\to\extracted_pages.pdf"
with open(output_path, "wb") as f:
writer.write(f)
print(f"[RESULT_PATH: {output_path}]")
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
output_path = r"C:\path\to\new_report.pdf"
c = canvas.Canvas(output_path, pagesize=A4)
width, height = A4
# 注册中文字体(需要字体文件)
# pdfmetrics.registerFont(TTFont("SimHei", "SimHei.ttf"))
# c.setFont("SimHei", 14)
c.setFont("Helvetica-Bold", 16)
c.drawString(50, height - 80, "Report Title")
c.setFont("Helvetica", 12)
c.drawString(50, height - 120, "Content goes here...")
c.save()
print(f"[RESULT_PATH: {output_path}]")
ocr 工具)reader.decrypt("password")