当前位置: 代码网 > it编程>前端脚本>Python > 使用Python进行PDF文档处理的常见操作

使用Python进行PDF文档处理的常见操作

2024年09月08日 Python 我要评论
引言使用 python 进行 pdf 文档处理可以通过多种库来实现,包括 pypdf2、pdfplumber、reportlab、pdfminer 等。这些库可以处理不同的 pdf 任务,例如 提取文

引言

使用 python 进行 pdf 文档处理可以通过多种库来实现,包括 pypdf2、pdfplumber、reportlab、pdfminer 等。这些库可以处理不同的 pdf 任务,例如 提取文本、拆分合并 pdf、修改 pdf、生成 pdf 等。以下是几种常见操作及对应的库和代码示例。

1. 安装常用库

首先,安装常用的 pdf 处理库:

pip install pypdf2 pdfplumber reportlab

2. 提取 pdf 文本

pypdf2 和 pdfplumber 都可以用于提取 pdf 文本。pypdf2 更轻量,但有时处理复杂的 pdf 格式效果较差,而 pdfplumber 更加适合处理表格等复杂结构的 pdf。

使用 pypdf2 提取文本

import pypdf2

# 打开 pdf 文件
with open('sample.pdf', 'rb') as file:
    reader = pypdf2.pdfreader(file)
    
    # 提取每一页的文本
    for page_num in range(len(reader.pages)):
        page = reader.pages[page_num]
        text = page.extract_text()
        print(f"第 {page_num + 1} 页的文本:\n{text}")

使用 pdfplumber 提取文本

pdfplumber 更适合处理结构化数据,尤其是表格。

import pdfplumber

# 打开 pdf 文件
with pdfplumber.open('sample.pdf') as pdf:
    for page_num in range(len(pdf.pages)):
        page = pdf.pages[page_num]
        text = page.extract_text()
        print(f"第 {page_num + 1} 页的文本:\n{text}")

3. 合并与拆分 pdf 文件

使用 pypdf2 合并 pdf 文件

可以将多个 pdf 文件合并为一个文件。

import pypdf2

pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']
merger = pypdf2.pdfmerger()

for pdf in pdf_files:
    merger.append(pdf)

# 保存合并后的 pdf 文件
with open('merged_output.pdf', 'wb') as output_file:
    merger.write(output_file)

使用 pypdf2 拆分 pdf 文件

将 pdf 文件拆分为单独的页面。

import pypdf2

# 打开 pdf 文件
with open('sample.pdf', 'rb') as file:
    reader = pypdf2.pdfreader(file)
    
    # 按页拆分并保存
    for page_num in range(len(reader.pages)):
        writer = pypdf2.pdfwriter()
        writer.add_page(reader.pages[page_num])
        
        with open(f'split_page_{page_num + 1}.pdf', 'wb') as output_file:
            writer.write(output_file)

4. 创建和修改 pdf

使用 reportlab 创建 pdf 文件

reportlab 是一个功能强大的库,可以用来生成新的 pdf 文件,支持插入文本、图片、图形等。

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

# 创建 pdf 文件
c = canvas.canvas("output.pdf", pagesize=letter)
c.drawstring(100, 750, "hello, this is a pdf created with reportlab!")

# 创建矩形
c.rect(100, 700, 400, 100)

# 保存 pdf
c.showpage()
c.save()

使用 reportlab 插入图片

你可以使用 reportlab 插入图片到 pdf 中。

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

c = canvas.canvas("output_with_image.pdf", pagesize=letter)
c.drawstring(100, 750, "this is a pdf with an image:")

# 插入图片
c.drawimage("image.png", 100, 600, width=200, height=150)

c.showpage()
c.save()

5. 提取 pdf 表格

pdfplumber 提供了提取 pdf 中表格的功能,非常适合处理含有表格的文档。

import pdfplumber

# 打开 pdf 文件
with pdfplumber.open('table_sample.pdf') as pdf:
    first_page = pdf.pages[0]
    
    # 提取表格数据
    tables = first_page.extract_table()
    
    # 打印提取到的表格数据
    for row in tables:
        print(row)

6. pdf 文档加密与解密

使用 pypdf2 加密 pdf 文件

你可以加密 pdf 文件,防止未经授权的访问。

import pypdf2

# 打开 pdf 文件
with open('sample.pdf', 'rb') as file:
    reader = pypdf2.pdfreader(file)
    writer = pypdf2.pdfwriter()

    for page_num in range(len(reader.pages)):
        writer.add_page(reader.pages[page_num])

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

    with open('encrypted_output.pdf', 'wb') as output_file:
        writer.write(output_file)

使用 pypdf2 解密 pdf 文件

如果 pdf 文件已加密,解密并提取文本的方法如下:

import pypdf2

# 打开加密的 pdf 文件
with open('encrypted_output.pdf', 'rb') as file:
    reader = pypdf2.pdfreader(file)
    
    # 提供密码
    reader.decrypt('user123')
    
    # 提取文本
    for page_num in range(len(reader.pages)):
        page = reader.pages[page_num]
        print(page.extract_text())

7. pdf 页面旋转

你可以旋转 pdf 的某些页面,以下是旋转页面的示例:

import pypdf2

# 打开 pdf 文件
with open('sample.pdf', 'rb') as file:
    reader = pypdf2.pdfreader(file)
    writer = pypdf2.pdfwriter()
    
    # 旋转每页 90 度
    for page in reader.pages:
        page.rotate_clockwise(90)
        writer.add_page(page)
    
    # 保存旋转后的 pdf 文件
    with open('rotated_output.pdf', 'wb') as output_file:
        writer.write(output_file)

总结

python 提供了多个强大的库来处理 pdf 文档。根据具体需求,选择适合的库来完成任务:

  • pypdf2:适合基本的 pdf 操作,如合并、拆分、加密、旋转等。
  • pdfplumber:适合复杂的文本和表格提取。
  • reportlab:用于生成和修改 pdf 文件,支持文本、图像和图形的绘制。

通过这些工具,你可以轻松地处理 pdf 文档的各种操作,从文本提取到生成和修改文档。

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

(0)

相关文章:

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

发表评论

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