SuperAPI AI 工具集

pypdf

办公与效率

查看项目

更新于 10-16 03:34

技能介绍

用途

pypdf 是一个纯 Python 库,用于以编程方式处理 PDF 文件。该技能覆盖了常见的 PDF 操作模式,适合在脚本或自动化流程中批量处理 PDF 文档。

主要能力

  • PDF 合并:将多个 PDF 合并为一个文档,可带书签(大纲条目),也可按页范围或指定页选择合并,或合并整个目录中的 PDF。
  • PDF 拆分:按每文件页数拆分、提取指定页面、按页范围拆分,以及按书签(大纲)条目拆分。
  • 页面旋转与变换:按 90、180 或 270 度旋转页面,自动将横向页面旋转为纵向,裁剪页面,缩放页面,以及重新排序页面。
  • 水印与图章:创建文字水印 PDF,并将水印添加到指定页面或全部页面。
  • 文本提取:从 PDF 页面提取文本内容。
  • 元数据处理:读取和修改 PDF 元数据。
  • 表单填写:以编程方式填写 PDF 表单字段。
  • 加密与解密:使用密码保护 PDF。

使用方式

安装:

# 基础安装
pip install pypdf

# 使用 uv(推荐)
uv pip install pypdf

# 带加密支持
pip install pypdf[crypto]

# 用于创建 PDF(水印、叠加层)
pip install pypdf reportlab

# 完整安装
pip install pypdf[crypto] reportlab Pillow

验证安装:

from pypdf import PdfReader, PdfWriter, PdfMerger
from pypdf.errors import PdfReadError

print("pypdf installed successfully!")
print(f"Version: {pypdf.__version__}")

核心用法示例(合并):

from pypdf import PdfMerger, PdfReader, PdfWriter
from pathlib import Path
from typing import List, Optional

def merge_pdfs(
    pdf_paths: List[str],
    output_path: str,
    bookmarks: bool = True
) -> None:
    """Merge multiple PDFs into one file."""
    merger = PdfMerger()

    for pdf_path in pdf_paths:
        path = Path(pdf_path)
        if path.exists():
            merger.append(
                str(pdf_path),
                outline_item=path.stem if bookmarks else None
            )
            print(f"Added: {path.name}")
        else:
            print(f"Warning: File not found - {pdf_path}")

    merger.write(output_path)
    merger.close()

    print(f"Merged PDF saved to: {output_path}")

拆分、旋转、水印等操作均通过 PdfReader 读取、PdfWriter 写出,或使用 PdfMerger 合并;创建水印需要 reportlab 生成水印 PDF 后再叠加。

适用场景

  • 将多个 PDF 文件合并为单个文档
  • 将大型 PDF 拆分为较小文件
  • 从 PDF 中提取特定页面
  • 为文档添加水印或图章
  • 提取文本内容用于分析
  • 读取或修改 PDF 元数据
  • 以编程方式填写 PDF 表单
  • 加密或解密 PDF 文件
  • 添加页码或页眉页脚
  • 旋转或重新排序页面
  • 在流水线中自动化 PDF 工作流

限制

以下情况不应使用本技能:

  • 从零创建 PDF(应使用 reportlab 或 weasyprint)
  • 需要高级文本布局控制(应使用 reportlab)
  • 将其他格式转换为 PDF(应使用专用转换器)
  • 需要对扫描文档进行 OCR(应使用 pytesseract + pdf2image)
  • 处理复杂表单创建(应使用 reportlab)
  • 需要编辑已有文本内容(支持有限)

关于收费、价格、平台支持范围等信息,资料中暂未提供。