python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python pypdf库处理PDF文件

Python中pypdf库处理PDF文件的详细说明和常见用法

作者:彬彬侠

这篇文章主要介绍了Python中pypdf库处理PDF文件的详细说明和常见用法, pypdf是Python库,用于处理PDF文件,支持读取、修改、合并、拆分、加密等操作,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

pypdf 是一个纯 Python 库,用于处理 PDF 文件。它支持读取、修改、合并、拆分、加密和提取 PDF 文件的文本、元数据及页面内容。pypdf 是 PyPDF2 的继任者(2022 年更名并重构),提供了更现代化的 API 和更高的性能,适合处理简单的 PDF 操作任务。

以下是对 pypdf 库的详细说明和常见用法。

1. pypdf 库的作用

2. 安装与环境要求

3. 核心功能与用法

pypdf 的核心类包括 PdfReader(读取 PDF)、PdfWriter(修改/创建 PDF)和 PdfMerger(合并 PDF)。以下是主要功能和示例。

3.1 读取 PDF

使用 PdfReader 读取 PDF 文件,提取元数据、页面数和文本。

from pypdf import PdfReader

# 打开 PDF 文件
reader = PdfReader("example.pdf")

# 获取元数据
metadata = reader.metadata
print(metadata)  # 输出: {'/Title': 'Example PDF', '/Author': 'John Doe', ...}

# 获取页面数
print(len(reader.pages))  # 输出页面数

# 提取第一页文本
page = reader.pages[0]
print(page.extract_text())

说明

3.2 合并 PDF

使用 PdfMerger 或 PdfWriter 合并多个 PDF 文件。

from pypdf import PdfMerger

# 创建合并器
merger = PdfMerger()

# 添加 PDF 文件
merger.append("file1.pdf")
merger.append("file2.pdf")

# 保存合并结果
merger.write("merged.pdf")
merger.close()

替代方法(使用 PdfWriter)

from pypdf import PdfReader, PdfWriter

writer = PdfWriter()
for pdf in ["file1.pdf", "file2.pdf"]:
    reader = PdfReader(pdf)
    for page in reader.pages:
        writer.add_page(page)

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

说明

3.3 拆分 PDF

将 PDF 拆分为单个页面或指定范围。

from pypdf import PdfReader, PdfWriter

reader = PdfReader("example.pdf")

# 拆分每一页为单独 PDF
for i, page in enumerate(reader.pages):
    writer = PdfWriter()
    writer.add_page(page)
    with open(f"page_{i+1}.pdf", "wb") as f:
        writer.write(f)

说明

3.4 旋转页面

旋转 PDF 的页面。

from pypdf import PdfReader, PdfWriter

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

# 旋转第一页 90 度
page = reader.pages[0]
page.rotate(90)
writer.add_page(page)

# 保存结果
with open("rotated.pdf", "wb") as f:
    writer.write(f)

说明

3.5 加密/解密 PDF

为 PDF 设置密码或解锁受保护的 PDF。

from pypdf import PdfReader, PdfWriter

# 加密 PDF
reader = PdfReader("example.pdf")
writer = PdfWriter()

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

writer.encrypt(user_password="my_password", algorithm="AES-256")
with open("encrypted.pdf", "wb") as f:
    writer.write(f)

# 解密 PDF
reader = PdfReader("encrypted.pdf")
if reader.is_encrypted:
    reader.decrypt("my_password")
print(reader.pages[0].extract_text())

说明

3.6 提取图像

从 PDF 中提取图像(需安装 Pillow)。

from pypdf import PdfReader

reader = PdfReader("example.pdf")
page = reader.pages[0]
for img in page.images:
    with open(f"image_{img.name}", "wb") as f:
        f.write(img.data)

说明

4. 性能与特点

5. 实际应用场景

示例(提取所有页面文本)

from pypdf import PdfReader

reader = PdfReader("example.pdf")
text = ""
for page in reader.pages:
    text += page.extract_text() or ""
print(text[:200])  # 输出前 200 字符

6. 注意事项

7. 综合示例

以下是一个综合示例,展示读取、合并、加密和提取文本:

from pypdf import PdfReader, PdfWriter, PdfMerger

# 读取 PDF 元数据和文本
reader = PdfReader("input.pdf")
print("Metadata:", reader.metadata)
print("Page count:", len(reader.pages))
print("First page text:", reader.pages[0].extract_text()[:100])

# 合并多个 PDF
merger = PdfMerger()
merger.append("input1.pdf")
merger.append("input2.pdf")
merger.write("merged.pdf")
merger.close()

# 加密合并后的 PDF
reader = PdfReader("merged.pdf")
writer = PdfWriter()
for page in reader.pages:
    writer.add_page(page.rotate(90))  # 旋转页面
writer.encrypt(user_password="secret", algorithm="AES-256")
with open("encrypted_rotated.pdf", "wb") as f:
    writer.write(f)

说明

8. 资源与文档

到此这篇关于Python中pypdf库处理PDF文件的详细说明和常见用法的文章就介绍到这了,更多相关Python pypdf库处理PDF文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文