pdf-tools
스타7
포크0
업데이트2026년 6월 9일 14:07
PDF 文件处理 (Use when: 需要读取/合并/分割/转换 PDF,或从 PDF 提取文字/表格). NOT for: 网页内容抓取.
설치
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SKILL.md
readonly메뉴
PDF 文件处理 (Use when: 需要读取/合并/分割/转换 PDF,或从 PDF 提取文字/表格). NOT for: 网页内容抓取.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
浏览器自动化操作 (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")