بنقرة واحدة
用于提取文本和表格、创建新 PDF、合并/拆分文档以及处理表单的综合 PDF 操作工具包。当 Claude 需要填写 PDF 表单或以编程方式大规模处理、生成或分析 PDF 文档时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
用于提取文本和表格、创建新 PDF、合并/拆分文档以及处理表单的综合 PDF 操作工具包。当 Claude 需要填写 PDF 表单或以编程方式大规模处理、生成或分析 PDF 文档时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
自动化浏览器交互,用于网页测试、表单填写、截图和数据提取。当用户需要浏览网站、与网页交互、填写表单、截取屏幕截图、测试 Web 应用程序或从网页提取信息时使用。
为后端代码(Express 路由、MongoDB 模型、Node 服务)生成测试时使用 - 分析文件类型,从 package.json 检测测试框架,生成包含设置/拆卸和边缘情况覆盖的全面测试
创建生产级 ChatKit 聊天机器人的指南,该机器人将 OpenAI Agents SDK 与 MCP 工具和自定义后端集成。在为任何应用程序构建具有专门功能、实时任务执行和用户隔离的 AI 驱动聊天机器人时使用。
当你发现当前可用的技能都不够合适(或用户明确要求你寻找技能)时使用。本技能会基于任务目标和约束,给出一份精简的候选技能清单,帮助你选出最适配当前任务的技能。
Translates English documents to Chinese with accurate semantics and grammar. Invoke when user asks to translate any English documentation or content to Chinese.
使用 OpenAI 和 Google API 进行 AI 图像生成。支持文生图、参考图片、宽高比和并行生成(推荐 4 个并发子代理)。当用户要求生成、创建或绘制图像时使用。
| name | |
| description | 用于提取文本和表格、创建新 PDF、合并/拆分文档以及处理表单的综合 PDF 操作工具包。当 Claude 需要填写 PDF 表单或以编程方式大规模处理、生成或分析 PDF 文档时使用。 |
| license | 专有。完整条款见 LICENSE.txt |
本指南涵盖使用 Python 库和命令行工具进行基本 PDF 处理操作。有关高级功能、JavaScript 库和详细示例,请参阅 reference.md。如果需要填写 PDF 表单,请阅读 forms.md 并按照其说明操作。
from pypdf import PdfReader, PdfWriter
# 读取 PDF
reader = PdfReader("document.pdf")
print(f"页数:{len(reader.pages)}")
# 提取文本
text = ""
for page in reader.pages:
text += page.extract_text()
from pypdf import PdfWriter, PdfReader
writer = PdfWriter()
for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
reader = PdfReader(pdf_file)
for page in reader.pages:
writer.add_page(page)
with open("merged.pdf", "wb") as output:
writer.write(output)
reader = PdfReader("input.pdf")
for i, page in enumerate(reader.pages):
writer = PdfWriter()
writer.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as output:
writer.write(output)
reader = PdfReader("document.pdf")
meta = reader.metadata
print(f"标题:{meta.title}")
print(f"作者:{meta.author}")
print(f"主题:{meta.subject}")
print(f"创建者:{meta.creator}")
reader = PdfReader("input.pdf")
writer = PdfWriter()
page = reader.pages[0]
page.rotate(90) # 顺时针旋转 90 度
writer.add_page(page)
with open("rotated.pdf", "wb") as output:
writer.write(output)
import pdfplumber
with pdfplumber.open("document.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
print(text)
with pdfplumber.open("document.pdf") as pdf:
for i, page in enumerate(pdf.pages):
tables = page.extract_tables()
for j, table in enumerate(tables):
print(f"第 {i+1} 页的表格 {j+1}:")
for row in table:
print(row)
import pandas as pd
with pdfplumber.open("document.pdf") as pdf:
all_tables = []
for page in pdf.pages:
tables = page.extract_tables()
for table in tables:
if table: # 检查表格是否非空
df = pd.DataFrame(table[1:], columns=table[0])
all_tables.append(df)
# 合并所有表格
if all_tables:
combined_df = pd.concat(all_tables, ignore_index=True)
combined_df.to_excel("extracted_tables.xlsx", index=False)
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
c = canvas.Canvas("hello.pdf", pagesize=letter)
width, height = letter
# 添加文本
c.drawString(100, height - 100, "Hello World!")
c.drawString(100, height - 120, "这是一个使用 reportlab 创建的 PDF")
# 添加线条
c.line(100, height - 140, 400, height - 140)
# 保存
c.save()
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate("report.pdf", pagesize=letter)
styles = getSampleStyleSheet()
story = []
# 添加内容
title = Paragraph("报告标题", styles['Title'])
story.append(title)
story.append(Spacer(1, 12))
body = Paragraph("这是报告的正文内容。" * 20, styles['Normal'])
story.append(body)
story.append(PageBreak())
# 第 2 页
story.append(Paragraph("第 2 页", styles['Heading1']))
story.append(Paragraph("第 2 页的内容", styles['Normal']))
# 构建 PDF
doc.build(story)
# 提取文本
pdftotext input.pdf output.txt
# 保留布局的文本提取
pdftotext -layout input.pdf output.txt
# 提取指定页面
pdftotext -f 1 -l 5 input.pdf output.txt # 第 1-5 页
# 合并 PDF
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
# 拆分页面
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
qpdf input.pdf --pages . 6-10 -- pages6-10.pdf
# 旋转页面
qpdf input.pdf output.pdf --rotate=+90:1 # 将第 1 页旋转 90 度
# 移除密码
qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf
# 合并
pdftk file1.pdf file2.pdf cat output merged.pdf
# 拆分
pdftk input.pdf burst
# 旋转
pdftk input.pdf rotate 1east output rotated.pdf
# 需要安装:pip install pytesseract pdf2image
import pytesseract
from pdf2image import convert_from_path
# 将 PDF 转换为图像
images = convert_from_path('scanned.pdf')
# 对每页进行 OCR
text = ""
for i, image in enumerate(images):
text += f"第 {i+1} 页:\n"
text += pytesseract.image_to_string(image)
text += "\n\n"
print(text)
from pypdf import PdfReader, PdfWriter
# 创建水印(或加载已有的)
watermark = PdfReader("watermark.pdf").pages[0]
# 应用到所有页面
reader = PdfReader("document.pdf")
writer = PdfWriter()
for page in reader.pages:
page.merge_page(watermark)
writer.add_page(page)
with open("watermarked.pdf", "wb") as output:
writer.write(output)
# 使用 pdfimages (poppler-utils)
pdfimages -j input.pdf output_prefix
# 将提取所有图像为 output_prefix-000.jpg、output_prefix-001.jpg 等
from pypdf import PdfReader, PdfWriter
reader = PdfReader("input.pdf")
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
# 添加密码
writer.encrypt("userpassword", "ownerpassword")
with open("encrypted.pdf", "wb") as output:
writer.write(output)
| 任务 | 最佳工具 | 命令/代码 |
|---|---|---|
| 合并 PDF | pypdf | writer.add_page(page) |
| 拆分 PDF | pypdf | 每页一个文件 |
| 提取文本 | pdfplumber | page.extract_text() |
| 提取表格 | pdfplumber | page.extract_tables() |
| 创建 PDF | reportlab | Canvas 或 Platypus |
| 命令行合并 | qpdf | qpdf --empty --pages ... |
| OCR 扫描 PDF | pytesseract | 先转换为图像 |
| 填写 PDF 表单 | pdf-lib 或 pypdf(见 forms.md) | 见 forms.md |