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. 实战经验总结
- 处理异常:在实际操作中,确保捕获文件读写或解析过程中的异常,例如文件不存在或解密失败。
- 测试 pdf 文件:由于 pdf 文件格式的多样性,在批量处理前需要先对样本文件进行测试。
- 性能优化:对于大文件,使用分批加载的方式处理。
- 安全性:避免在代码中硬编码敏感信息,例如密码。
到此这篇关于python使用pypdf进行pdf操作的代码示例的文章就介绍到这了,更多相关python pypdf进行pdf操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
 
             我要评论
我要评论 
                                             
                                             
                                             
                                             
                                            
发表评论