AgentSkillsCN

pdf

一套全面的PDF操作工具集,可用于提取文本与表格、创建新PDF、合并/拆分文档、处理表单,以及对扫描文档进行OCR处理。当您需要填写PDF表单、从PDF中提取数据、合并或拆分文档、以编程方式创建PDF、大规模处理文档,或对基于图像的PDF进行OCR处理时,可使用此技能。

SKILL.md
--- frontmatter
name: pdf
description: Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, handling forms, and OCR on scanned documents. Use when filling PDF forms, extracting data from PDFs, merging or splitting documents, creating PDFs programmatically, processing documents at scale, or performing OCR on image-based PDFs.
allowed-tools: [Read, Bash]

PDF Processing Guide

Reference Files

Detailed guides for specific tasks and libraries:

  • python-libraries.md - Comprehensive Python library examples (pypdf, pdfplumber, reportlab)
  • cli-tools.md - Command-line tools reference (pdftotext, qpdf, pdftk)
  • reference.md - Advanced features (pypdfium2, pdf-lib JavaScript, OCR)
  • forms.md - Complete workflow for filling PDF forms

Quick Start

Extract Text

python
import pdfplumber

with pdfplumber.open("document.pdf") as pdf:
    for page in pdf.pages:
        print(page.extract_text())

Extract Tables

python
import pdfplumber

with pdfplumber.open("document.pdf") as pdf:
    for i, page in enumerate(pdf.pages):
        tables = page.extract_tables()
        for table in tables:
            print(table)

Merge PDFs

python
from pypdf import PdfWriter, PdfReader

writer = PdfWriter()
for pdf_file in ["doc1.pdf", "doc2.pdf"]:
    reader = PdfReader(pdf_file)
    for page in reader.pages:
        writer.add_page(page)

with open("merged.pdf", "wb") as output:
    writer.write(output)

Split PDF into Pages

python
from pypdf import PdfWriter, PdfReader

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)

Create PDF

python
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

c = canvas.Canvas("hello.pdf", pagesize=letter)
c.drawString(100, 750, "Hello World!")
c.save()

Common Workflows

Fill Out a Form

PDF forms can be fillable (with form fields) or non-fillable (requiring manual positioning). For complete step-by-step instructions, see forms.md.

Extract and Analyze Data

Combine text extraction with JSON export for downstream processing:

python
import pdfplumber
import json

# Extract all text
with pdfplumber.open("document.pdf") as pdf:
    full_text = "\n".join(
        page.extract_text() or "" for page in pdf.pages
    )

# Extract tables as structured data
data = []
with pdfplumber.open("document.pdf") as pdf:
    for page_num, page in enumerate(pdf.pages, 1):
        for table in (page.extract_tables() or []):
            data.append({"page": page_num, "data": table})

with open("output.json", "w") as f:
    json.dump(data, f, indent=2)

Process Scanned PDFs (OCR)

Extract text from image-based PDFs using OCR. See reference.md for detailed OCR examples.

Add Password Protection

python
from pypdf import PdfReader, PdfWriter

reader = PdfReader("input.pdf")
writer = PdfWriter()

for page in reader.pages:
    writer.add_page(page)

writer.encrypt("password")

with open("encrypted.pdf", "wb") as output:
    writer.write(output)

Tool Selection Guide

TaskRecommended ToolSee Also
Extract text/tablespdfplumberpython-libraries.md
Merge/split/rotatepypdfpython-libraries.md
Create PDFsreportlabpython-libraries.md
Command-line operationsqpdf/pdftotextcli-tools.md
Fill formspypdf/pdf-libforms.md
Scanned PDFs/OCRpytesseractreference.md
Advanced renderingpypdfium2reference.md
JavaScript contextpdf-libreference.md

Next Steps