بنقرة واحدة
全方位的 PDF 操作工具組,用於擷取文字和表格、建立新 PDF、合併/分割文件,以及處理表單。當 Claude 需要填寫 PDF 表單或以程式化方式大規模處理、產生或分析 PDF 文件時使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
全方位的 PDF 操作工具組,用於擷取文字和表格、建立新 PDF、合併/分割文件,以及處理表單。當 Claude 需要填寫 PDF 表單或以程式化方式大規模處理、產生或分析 PDF 文件時使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
使用設計哲學在 .png 和 .pdf 文件中建立美麗的視覺藝術。當使用者要求建立海報、藝術品、設計或其他靜態作品時,應使用此技能。建立原創視覺設計,絕不複製現有藝術家的作品以避免侵犯版權。
全方位的文件建立、編輯和分析功能,支援追蹤修訂、註解、格式保留和文字擷取。當 Claude 需要處理專業文件(.docx 檔案)時使用,包括:(1) 建立新文件、(2) 修改或編輯內容、(3) 處理追蹤修訂、(4) 新增註解,或任何其他文件相關任務
全方位的試算表建立、編輯和分析功能,支援公式、格式化、資料分析和視覺化。當 Claude 需要處理試算表(.xlsx、.xlsm、.csv、.tsv 等)時使用,包括:(1) 建立包含公式和格式的新試算表、(2) 讀取或分析資料、(3) 修改現有試算表同時保留公式、(4) 試算表中的資料分析和視覺化,或 (5) 重新計算公式
透過理解上下文、尋找重複項目、建議更好的結構,以及自動化清理任務,智慧地組織您電腦中的檔案和資料夾。減少認知負擔,保持您的數位工作空間整潔,無需手動費力。
建立有效技能的指南。當使用者想要建立新技能(或更新現有技能)以透過專業知識、工作流程或工具整合來擴展 Claude 的能力時,應使用此技能。
用於為各種產物套用主題樣式的工具組。這些產物可以是投影片、文件、報告、HTML 登陸頁面等。提供 10 個預設的顏色/字型主題,可套用至任何已建立的產物,或即時生成新主題。
| name | |
| description | 全方位的 PDF 操作工具組,用於擷取文字和表格、建立新 PDF、合併/分割文件,以及處理表單。當 Claude 需要填寫 PDF 表單或以程式化方式大規模處理、產生或分析 PDF 文件時使用。 |
| license | Proprietary. LICENSE.txt has complete terms |
本指南涵蓋使用 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())
# 第 2 頁
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 掃描的 PDF | pytesseract | 先轉換為圖片 |
| 填寫 PDF 表單 | pdf-lib 或 pypdf(參閱 forms.md) | 參閱 forms.md |