PDF 文档处理

标识: pdf最新版本: 1.0.0安装 10 次更新于 2026-11-06
办公效率

创建、读取、拆分和合并 PDF 文档。

在超级AI助理对话中安装/skill install pdf

技能介绍

技能简介

读取、创建和整理 PDF,支持文字与表格提取、页面拆分合并、旋转、水印和常见表单处理。扫描件可在 OCR 环境可用时识别,适合把不同来源的资料整理成可使用的文件。

适用场景

PDF 内容提取;材料合并与拆页;报告制作;扫描件识别;页面和水印处理。

使用方法
  1. 上传 PDF 或提供可访问文件,明确是提取内容、修改页面还是新建文件。
  2. 指定处理页码、合并顺序、目标格式及需要保留的版式;扫描件注明文字语言。
  3. 生成后核对页数、顺序和关键内容,表格、表单及扫描识别结果需重点检查。
参数与输入说明

可直接用自然语言说明这些选项;带代码样式的参数按实际工具定义处理。

参数或输入项 填写说明
文件与页码 提供一个或多个文件,以及页码范围、合并顺序和旋转要求。
提取内容 文字、表格、图片或指定章节,可说明目标输出形式。
新建要求 页面尺寸、标题、正文、表格、水印和排版偏好。
扫描与加密 扫描件需 OCR 能力;加密文件需合法访问权限及已知密码。
示例需求

合并这三份 PDF,顺序为申请表、合同、附件;把合同第 2–4 页另存一份,再提取其中的付款条款供我核对。

交付内容

整理后的 PDF 文件、提取的文字与表格,或扫描识别结果。

使用前提与注意事项
  • 需要相应 PDF 处理依赖;OCR 还需要识别工具和对应语言资源。
  • 扫描质量、复杂表格、电子签名和特殊表单可能影响结果,应保留原件并检查输出。

使用说明

以下为技能最新版本的 SKILL.md 正文,智能体按其中的步骤完成任务。

PDF Processing Guide

Overview

This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed examples, see REFERENCE.md. If you need to fill out a PDF form, read FORMS.md and follow its instructions.

Quick Start

from pypdf import PdfReader, PdfWriter

# Read a PDF
reader = PdfReader("document.pdf")
print(f"Pages: {len(reader.pages)}")

# Extract text
text = ""
for page in reader.pages:
    text += page.extract_text()

Python Libraries

pypdf - Basic Operations
Merge PDFs
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)
Split PDF
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)
Extract Metadata
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}")
Rotate Pages
reader = PdfReader("input.pdf")
writer = PdfWriter()

page = reader.pages[0]
page.rotate(90)  # Rotate 90 degrees clockwise
writer.add_page(page)

with open("rotated.pdf", "wb") as output:
    writer.write(output)
pdfplumber - Text and Table Extraction
Extract Text with Layout
import pdfplumber

with pdfplumber.open("document.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()
        print(text)
Extract Tables
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)
Advanced Table Extraction
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:  # Check if table is not empty
                df = pd.DataFrame(table[1:], columns=table[0])
                all_tables.append(df)

# Combine all tables
if all_tables:
    combined_df = pd.concat(all_tables, ignore_index=True)
    combined_df.to_excel("extracted_tables.xlsx", index=False)
reportlab - Create PDFs
Basic PDF Creation
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

c = canvas.Canvas("hello.pdf", pagesize=letter)
width, height = letter

# Add text
c.drawString(100, height - 100, "Hello World!")
c.drawString(100, height - 120, "This is a PDF created with reportlab")

# Add a line
c.line(100, height - 140, 400, height - 140)

# Save
c.save()
Create PDF with Multiple Pages
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 = []

# Add content
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())

# Page 2
story.append(Paragraph("Page 2", styles['Heading1']))
story.append(Paragraph("Content for page 2", styles['Normal']))

# Build PDF
doc.build(story)
Subscripts and Superscripts

IMPORTANT: Never use Unicode subscript/superscript characters (₀₁₂₃₄₅₆₇₈₉, ⁰¹²³⁴⁵⁶⁷⁸⁹) in ReportLab PDFs. The built-in fonts do not include these glyphs, causing them to render as solid black boxes.

Instead, use ReportLab's XML markup tags in Paragraph objects:

from reportlab.platypus import Paragraph
from reportlab.lib.styles import getSampleStyleSheet

styles = getSampleStyleSheet()

# Subscripts: use <sub> tag
chemical = Paragraph("H<sub>2</sub>O", styles['Normal'])

# Superscripts: use <super> tag
squared = Paragraph("x<super>2</super> + y<super>2</super>", styles['Normal'])

For canvas-drawn text (not Paragraph objects), manually adjust font the size and position rather than using Unicode subscripts/superscripts.

Command-Line Tools

pdftotext (poppler-utils)
# Extract text
pdftotext input.pdf output.txt

# Extract text preserving layout
pdftotext -layout input.pdf output.txt

# Extract specific pages
pdftotext -f 1 -l 5 input.pdf output.txt  # Pages 1-5
qpdf
# Merge PDFs
qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf

# Split pages
qpdf input.pdf --pages . 1-5 -- pages1-5.pdf
qpdf input.pdf --pages . 6-10 -- pages6-10.pdf

# Rotate pages
qpdf input.pdf output.pdf --rotate=+90:1  # Rotate page 1 by 90 degrees

# Remove password
qpdf --password=mypassword --decrypt encrypted.pdf decrypted.pdf
pdftk (if available)
# Merge
pdftk file1.pdf file2.pdf cat output merged.pdf

# Split
pdftk input.pdf burst

# Rotate
pdftk input.pdf rotate 1east output rotated.pdf

Common Tasks

Extract Text from Scanned PDFs
# Requires: pip install pytesseract pdf2image
import pytesseract
from pdf2image import convert_from_path

# Convert PDF to images
images = convert_from_path('scanned.pdf')

# OCR each page
text = ""
for i, image in enumerate(images):
    text += f"Page {i+1}:\n"
    text += pytesseract.image_to_string(image)
    text += "\n\n"

print(text)
Add Watermark
from pypdf import PdfReader, PdfWriter

# Create watermark (or load existing)
watermark = PdfReader("watermark.pdf").pages[0]

# Apply to all pages
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)
Extract Images
# Using pdfimages (poppler-utils)
pdfimages -j input.pdf output_prefix

# This extracts all images as output_prefix-000.jpg, output_prefix-001.jpg, etc.
Password Protection
from pypdf import PdfReader, PdfWriter

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

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

# Add password
writer.encrypt("userpassword", "ownerpassword")

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

Quick Reference

Task Best Tool Command/Code
Merge PDFs pypdf writer.add_page(page)
Split PDFs pypdf One page per file
Extract text pdfplumber page.extract_text()
Extract tables pdfplumber page.extract_tables()
Create PDFs reportlab Canvas or Platypus
Command line merge qpdf qpdf --empty --pages ...
OCR scanned PDFs pytesseract Convert to image first
Fill PDF forms pdf-lib or pypdf (see FORMS.md) See FORMS.md

Next Steps

  • For advanced pypdfium2 usage, see REFERENCE.md
  • For JavaScript libraries (pdf-lib), see REFERENCE.md
  • If you need to fill out a PDF form, follow the instructions in FORMS.md
  • For troubleshooting guides, see REFERENCE.md

版本记录

版本发布日期更新说明
1.0.02026-10-15-

相关技能

全部技能 →
PPT 生成与编辑 图标

PPT 生成与编辑

办公效率、内容创作

创建、读取和编辑 PowerPoint 演示文稿,支持内容提取、幻灯片合并与拆分,以及模板、布局、演讲备注和批注处理。

飞书 CLI 图标

飞书 CLI

办公效率

安装、配置和登录授权飞书 CLI,排查依赖缺失或技能未就绪,并通过飞书开放平台操作消息、文档、多维表格、电子表格、日历、邮箱、任务和会议等业务。当用户要求安装飞书 CLI、修复无法调用、完成授权或操作上述飞书资源时使用。

企业微信 CLI 图标

企业微信 CLI

办公效率

通过CLI操作企业微信,适用于人工操作和智能体调用。

LinkAI CLI 图标

LinkAI CLI

办公效率、编程开发

通过CLI调用 LinkAI 的对话、图像、视频和音频模型,以及智能体应用、知识库、数据库、工作流和插件等平台资源。

腾讯文档 图标

腾讯文档

办公效率、内容创作

查询、编辑和管理腾讯文档,支持生成演示文稿、表格和文字文档。

钉钉 CLI 图标

钉钉 CLI

办公效率

通过CLI管理钉钉表格、日历、通讯录、群聊、机器人、待办、审批、考勤和日志等功能。

把团队的做事方法沉淀为技能

在技能中心导入技能包、从平台资源生成或在线编写,发布后安装到超级AI助理使用。

前往技能中心
©2025 极简未来
粤ICP备2023060400号
网信算备440307657151501250017号
购买咨询