Python中操作PDF文件的常用方法

 更新时间:2025年02月24日 10:37:24   作者:王子良.  
在 Python 中操作 PDF 文件的常用方法是使用专门的第三方库,这些库可以帮助你完成常见的操作,如读取 PDF 内容、提取文本、合并和拆分 PDF 文件、修改文件等,常用的库包括 PyPDF2、pdfminer、reportlab 等,下面是一些常见任务的示例,需要的朋友可以参考下

1. 安装所需库

首先,需要安装必要的库。你可以使用以下命令来安装这些库:

pip install PyPDF2
pip install pdfminer.six
pip install reportlab

2. 使用 PyPDF2 操作 PDF 文件

PyPDF2 是一个非常流行的库,支持对 PDF 文件进行合并、拆分、加密、解密、旋转等操作。

2.1 合并多个 PDF 文件

import PyPDF2
 
# 创建一个 PDF 合并器对象
pdf_merger = PyPDF2.PdfMerger()
 
# 需要合并的 PDF 文件列表
pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']
 
# 合并 PDF 文件
for pdf in pdf_files:
    pdf_merger.append(pdf)
 
# 输出合并后的 PDF 文件
pdf_merger.write('merged_output.pdf')
pdf_merger.close()
 
print("PDF 文件合并完成!")

2.2 拆分 PDF 文件

import PyPDF2
 
# 打开 PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
 
    # 获取 PDF 文件的页数
    total_pages = len(reader.pages)
 
    # 创建一个 PDF 写入器对象
    writer = PyPDF2.PdfWriter()
 
    # 拆分为每一页一个 PDF 文件
    for page_num in range(total_pages):
        writer.add_page(reader.pages[page_num])
 
        # 写入到新的 PDF 文件
        with open(f'page_{page_num + 1}.pdf', 'wb') as output_file:
            writer.write(output_file)
 
    print("PDF 文件拆分完成!")

2.3 提取 PDF 文件的文本

import PyPDF2
 
# 打开 PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    text = ""
    
    # 提取所有页的文本
    for page_num in range(len(reader.pages)):
        page = reader.pages[page_num]
        text += page.extract_text()
 
print("PDF 文件内容:")
print(text)

3. 使用 pdfminer 提取 PDF 文本

pdfminer.six 是一个专注于从 PDF 中提取文本的库,比 PyPDF2 更适合复杂的文本提取操作。它支持从 PDF 中提取文本和元数据。

3.1 提取 PDF 文件中的文本

from pdfminer.high_level import extract_text
 
# 提取 PDF 文件中的文本
text = extract_text('sample.pdf')
 
print("提取的文本内容:")
print(text)

4. 使用 reportlab 创建 PDF 文件

reportlab 是一个非常强大的库,主要用于生成 PDF 文件。它提供了丰富的 API 来设计和生成 PDF。

4.1 创建一个简单的 PDF 文件

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
 
# 创建一个 PDF 文件并绘制文本
def create_pdf(output_filename):
    c = canvas.Canvas(output_filename, pagesize=letter)
    c.drawString(100, 750, "Hello, this is a simple PDF created with ReportLab!")
    c.save()
 
# 调用函数生成 PDF 文件
create_pdf("output.pdf")
print("PDF 文件创建完成!")

4.2 在 PDF 中添加图像

from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
 
def create_pdf_with_image(output_filename):
    c = canvas.Canvas(output_filename, pagesize=letter)
    c.drawString(100, 750, "Here is an image below:")
    
    # 添加图像
    c.drawImage("image.jpg", 100, 500, width=200, height=150)  # 图像位置和大小
    
    c.save()
 
create_pdf_with_image("pdf_with_image.pdf")
print("PDF 文件(带图像)创建完成!")

5. 使用 PyMuPDF (fitz) 提取文本

PyMuPDF 是一个处理 PDF、XPS、EPUB 等文件格式的库,功能非常强大且效率较高。你可以使用它来提取文本、图像和其他内容。

5.1 提取 PDF 文件的文本

import fitz  # PyMuPDF
 
# 打开 PDF 文件
doc = fitz.open('sample.pdf')
 
# 提取所有页面的文本
text = ""
for page_num in range(len(doc)):
    page = doc.load_page(page_num)
    text += page.get_text()
 
print("PDF 文件的内容:")
print(text)

6. 对 PDF 文件进行加密和解密

6.1 使用 PyPDF2 对 PDF 进行加密

import PyPDF2
 
# 打开 PDF 文件
with open('sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    writer = PyPDF2.PdfWriter()
    
    # 将 PDF 中的所有页面添加到 writer 对象中
    for page in reader.pages:
        writer.add_page(page)
    
    # 设置密码
    password = "your_password"
    writer.encrypt(password)
    
    # 写入加密后的文件
    with open('encrypted_sample.pdf', 'wb') as encrypted_file:
        writer.write(encrypted_file)
 
print("PDF 文件加密完成!")

6.2 使用 PyPDF2 对 PDF 进行解密

import PyPDF2
 
# 打开加密的 PDF 文件
with open('encrypted_sample.pdf', 'rb') as file:
    reader = PyPDF2.PdfReader(file)
    
    # 解密 PDF 文件
    password = "your_password"
    if reader.is_encrypted:
        reader.decrypt(password)
    
    # 创建一个 PDF 写入器对象
    writer = PyPDF2.PdfWriter()
    
    # 将解密后的页面添加到写入器中
    for page in reader.pages:
        writer.add_page(page)
    
    # 输出解密后的 PDF 文件
    with open('decrypted_sample.pdf', 'wb') as decrypted_file:
        writer.write(decrypted_file)
 
print("PDF 文件解密完成!")

总结

使用 Python 处理 PDF 文件是非常常见的任务,通过不同的库,你可以实现 PDF 的各种操作:

  • PyPDF2:用于合并、拆分、加密、解密和提取文本。
  • pdfminer.six:专注于从 PDF 中提取文本,适合需要复杂文本解析的场景。
  • reportlab:用于生成 PDF 文件,支持绘图、添加文本、图片等。
  • PyMuPDF (fitz):支持高效地提取文本、图像等,并处理 PDF 文件。

以上就是Python中操作PDF文件的常用方法的详细内容,更多关于Python操作PDF文件的资料请关注脚本之家其它相关文章!

相关文章

  • 基础语音识别-食物语音识别baseline(CNN)

    基础语音识别-食物语音识别baseline(CNN)

    这篇文章主要介绍了一个基础语音识别题目-食物语音识别baseline(CNN),代码详细吗,对于想要学习语音识别的朋友可以参考下
    2021-04-04
  • Python Pygame实战之超级炸弹人游戏的实现

    Python Pygame实战之超级炸弹人游戏的实现

    如今的玩家们在无聊的时候会玩些什么游戏呢?王者还是吃鸡是最多的选择。但在80、90年代的时候多是一些很简单的游戏:《超级玛丽》、《魂斗罗》等。本文将利用Pygame制作另一个经典游戏—炸弹人,感兴趣的可以了解一下
    2022-03-03
  • Python中创建相关系数矩阵的方法小结

    Python中创建相关系数矩阵的方法小结

    相关系数矩阵是一种用于衡量变量之间关系的重要工具,本文将介绍在 Python 中创建相关系数矩阵的不同方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Python为什么要保留显式的self

    Python为什么要保留显式的self

    本文主要介绍了Python为什么要保留显式的self,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python基于pygame实现的font游戏字体(附源码)

    Python基于pygame实现的font游戏字体(附源码)

    这篇文章主要介绍了Python基于pygame实现的font游戏字体,涉及Python响应键盘按键动态操作图片元素的相关技巧,需要的朋友可以参考下
    2015-11-11
  • keras 自定义loss层+接受输入实例

    keras 自定义loss层+接受输入实例

    这篇文章主要介绍了keras 自定义loss层+接受输入实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python3 Tkinkter + SQLite实现登录和注册界面

    Python3 Tkinkter + SQLite实现登录和注册界面

    这篇文章主要为大家详细介绍了Python3 Tkinkter + SQLite实现登录和注册界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • 8个Python必备的PyCharm插件(附下载地址)

    8个Python必备的PyCharm插件(附下载地址)

    Python是一种广泛使用的编程语言,PyCharm是最受欢迎的Python IDE之一,本文就来介绍一下8个Python必备的PyCharm插件,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • python3.5 email实现发送邮件功能

    python3.5 email实现发送邮件功能

    这篇文章主要为大家详细介绍了python3.5 email实现发送邮件功能,包含txt、图片、HTML、附件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • pytorch中的transforms模块实例详解

    pytorch中的transforms模块实例详解

    今天小编就为大家分享一篇pytorch中的transforms模块实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12

最新评论