当前位置: 代码网 > it编程>前端脚本>Python > Python使用PyPDF进行PDF操作的代码示例

Python使用PyPDF进行PDF操作的代码示例

2025年01月23日 Python 我要评论
1. 为什么选择 pypdf?pypdf是一个轻量级且功能强大的 pdf 操作库,支持以下功能:合并和拆分 pdf 文件提取文本和元信息添加或修改文档的元数据加密和解密 pdf自定义 pdf 页面旋转

1. 为什么选择 pypdf?

pypdf 是一个轻量级且功能强大的 pdf 操作库,支持以下功能:

  • 合并和拆分 pdf 文件
  • 提取文本和元信息
  • 添加或修改文档的元数据
  • 加密和解密 pdf
  • 自定义 pdf 页面旋转或裁剪

以下是一些实战场景的详细实现。

2. 安装 pypdf

首先,需要安装 pypdf 库。可以使用 pip:

pip install pypdf

确保安装的是最新版,以获得最新功能和性能改进。

3. pdf 文件的合并与拆分

3.1 合并 pdf 文件

合并多个 pdf 文件在生成报告或整理文档时非常有用。

from pypdf import pdfmerger

# 初始化合并器
merger = pdfmerger()

# 添加需要合并的 pdf 文件
merger.append("file1.pdf")
merger.append("file2.pdf")

# 保存合并后的文件
merger.write("merged.pdf")
merger.close()
print("pdf 合并完成!")

3.2 拆分 pdf 文件

将一个 pdf 文件拆分为多个独立的页面文件。

from pypdf import pdfreader, pdfwriter

# 读取 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_file:
        writer.write(output_file)
print("pdf 拆分完成!")

4. 提取 pdf 文本

提取 pdf 文件中的文本内容,可以用于数据分析或自动化处理。

from pypdf import pdfreader

# 读取 pdf 文件
reader = pdfreader("input.pdf")

# 提取每页的文本
for page in reader.pages:
    print(page.extract_text())

注意事项

  • 文本提取的效果取决于 pdf 的结构。如果 pdf 中的文本是以图像形式存储的,则无法直接提取文本。

5. 修改 pdf 元信息

修改 pdf 的元数据,例如标题、作者等。

from pypdf import pdfreader, pdfwriter

reader = pdfreader("input.pdf")
writer = pdfwriter()

# 复制所有页面到新 pdf
writer.add_pages(reader.pages)

# 修改元信息
writer.metadata = {
    "/title": "新的标题",
    "/author": "作者名",
    "/subject": "主题描述"
}

with open("output.pdf", "wb") as output_file:
    writer.write(output_file)
print("元信息修改完成!")

6. pdf 加密与解密

6.1 加密 pdf

为 pdf 文件添加密码保护。

from pypdf import pdfwriter

writer = pdfwriter()
writer.append("input.pdf")

# 设置密码
writer.encrypt(user_password="user123", owner_password="owner123")

with open("encrypted.pdf", "wb") as output_file:
    writer.write(output_file)
print("pdf 加密完成!")

6.2 解密 pdf

解密受密码保护的 pdf 文件。

from pypdf import pdfreader

reader = pdfreader("encrypted.pdf")

# 提供密码解密
reader.decrypt("user123")

for page in reader.pages:
    print(page.extract_text())

7. 页面旋转与裁剪

7.1 旋转页面

旋转 pdf 的页面,例如将横向页面转为纵向。

from pypdf import pdfreader, pdfwriter

reader = pdfreader("input.pdf")
writer = pdfwriter()

# 旋转每一页
for page in reader.pages:
    page.rotate(90)  # 顺时针旋转 90 度
    writer.add_page(page)

with open("rotated.pdf", "wb") as output_file:
    writer.write(output_file)
print("页面旋转完成!")

7.2 裁剪页面

裁剪页面边框以去掉不必要的内容。

from pypdf import pdfreader, pdfwriter

reader = pdfreader("input.pdf")
writer = pdfwriter()

for page in reader.pages:
    # 设置裁剪框 (左, 下, 右, 上)
    page.mediabox.lower_left = (50, 50)
    page.mediabox.upper_right = (500, 700)
    writer.add_page(page)

with open("cropped.pdf", "wb") as output_file:
    writer.write(output_file)
print("页面裁剪完成!")

8. 实战经验总结

  1. 处理异常:在实际操作中,确保捕获文件读写或解析过程中的异常,例如文件不存在或解密失败。
  2. 测试 pdf 文件:由于 pdf 文件格式的多样性,在批量处理前需要先对样本文件进行测试。
  3. 性能优化:对于大文件,使用分批加载的方式处理。
  4. 安全性:避免在代码中硬编码敏感信息,例如密码。

到此这篇关于python使用pypdf进行pdf操作的代码示例的文章就介绍到这了,更多相关python pypdf进行pdf操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com