بنقرة واحدة
面向 PDF 的全能工具包,可用于抽取文本与表格、创建新 PDF、合并/拆分文档以及处理表单。当 Claude 需要填写 PDF 表单,或要批量处理、生成、分析 PDF 文件时请使用本技能。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
面向 PDF 的全能工具包,可用于抽取文本与表格、创建新 PDF、合并/拆分文档以及处理表单。当 Claude 需要填写 PDF 表单,或要批量处理、生成、分析 PDF 文件时请使用本技能。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
“面向 PowerPoint 演示文稿(.pptx)的创建、编辑与分析”。当 Claude 需要创建新演示文稿、修改现有内容、处理版式、添加批注或演讲者备注等与幻灯相关的任务时,请使用本技能。
使用带种子随机性的 p5.js,通过交互式参数探索生成原创算法艺术。适用于用户提出涉及代码生成艺术、算法艺术、流场或粒子系统的请求。始终创作原创算法艺术,避免直接复制现有艺术家的作品,以免引发版权问题。
一套基于现代前端技术(React、Tailwind CSS、shadcn/ui)的工具,用来创建复杂的 claude.ai HTML 成品。适用于需要状态管理、路由或 shadcn/ui 组件的复杂作品,不适用于简单的单文件 HTML/JSX。
将 Anthropic 官方品牌配色与字体应用到需要呈现 Anthropic 风格的任何产出物上。当涉及品牌配色、风格规范、视觉格式或公司设计标准时请使用本技能。
基于设计哲学在 .png 与 .pdf 文档中创作精美视觉作品。当用户请求海报、艺术作品、设计稿或其他静态作品时,请使用本技能。务必创作原创视觉设计,避免复制现有艺术家的作品,以免触犯版权。
「面向 .docx 文件的文档创建、编辑与分析」——支持修订记录、批注、格式保持与文本抽取。当 Claude 需要处理专业 Word 文档(.docx)以执行以下任一任务时请使用本技能:(1) 创建新文档;(2) 修改或编辑内容;(3) 处理修订记录;(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"Pages: {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"Title: {meta.title}")
print(f"Author: {meta.author}")
print(f"Subject: {meta.subject}")
print(f"Creator: {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"Table {j+1} on page {i+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, "This is a PDF created with reportlab")
# 添加线条
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("Report Title", styles['Title'])
story.append(title)
story.append(Spacer(1, 12))
body = Paragraph("This is the body of the report. " * 20, styles['Normal'])
story.append(body)
story.append(PageBreak())
# 第二页
story.append(Paragraph("Page 2", styles['Heading1']))
story.append(Paragraph("Content for page 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"Page {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 扫描件 | pytesseract | 需先转成图像 |
| 填写 PDF 表单 | pdf-lib 或 pypdf(见 forms.md) | 参阅 forms.md |