Python使用PyPDF2操作PDF的详细教程

 更新时间:2025年02月28日 09:44:46   作者:morris131  
PyPDF2是一个用于处理PDF文件的Python库,可以读取、合并、拆分、裁剪和修改PDF文件,以下是一些使用PyPDF2的基本示例,包括如何安装该库以及执行一些常见的PDF操作,需要的朋友可以参考下

安装PyPDF2

首先,你需要安装PyPDF2库。你可以使用pip来安装它:

pip install PyPDF2

读取PDF文件

读取PDF文件并打印其页数:

import PyPDF2

# 使用PyPDF2读取pdf文件
if __name__ == '__main__':
    # 打开 PDF 文件
    with open('example.pdf', 'rb') as file:
        # 创建一个 PDF 阅读器对象
        reader = PyPDF2.PdfReader(file)

        # 打印 PDF 文件中的页数
        print(f'Number of pages: {len(reader.pages)}')

提取文本

从PDF文件中提取文本:

import PyPDF2

# 使用PyPDF2读取pdf文本
if __name__ == '__main__':
    # 打开 PDF 文件
    with open('example.pdf', 'rb') as file:
        # 创建一个 PDF 阅读器对象
        reader = PyPDF2.PdfReader(file)

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

        print(text)

拆分PDF文件

将PDF文件拆分为两个文件,一个文件包含奇数页,一个文件包含偶数页:

import PyPDF2

# 使用PyPDF2将PDF文件拆分为两个文件,一个文件包含奇数页,一个文件包含偶数页:
if __name__ == '__main__':
    # 创建一个 PDF 写入器对象
    odd_writer = PyPDF2.PdfWriter()
    even_writer = PyPDF2.PdfWriter()

    # 打开要拆分的 PDF 文件
    with open('example.pdf', 'rb') as file:
        reader = PyPDF2.PdfReader(file)

        page_num = 0
        for page in reader.pages:
            # print(page_num)
            if page_num % 2 == 0:
                # print(reader.pages[page_num])
                odd_writer.add_page(page)
            else:
                even_writer.add_page(page)
            page_num = page_num+1

        # 将拆分后的 PDF 写入到一个新文件
        with open('example1.pdf', 'wb') as output_pdf:
            odd_writer.write(output_pdf)

        # 将拆分后的 PDF 写入到一个新文件
        with open('example2.pdf', 'wb') as output_pdf:
            even_writer.write(output_pdf)

合并PDF文件

你可以将多个PDF文件合并为一个:

import PyPDF2

# 使用PyPDF2合并两个pdf文件
if __name__ == '__main__':
    # 打开要合并的 PDF 文件
    pdf_files = ['example1.pdf', 'example2.pdf']

    # 创建一个 PDF 写入器对象
    merger = PyPDF2.PdfMerger()

    for pdf_file in pdf_files:
        merger.append(pdf_file)

    # 将合并后的 PDF 写入到一个新文件
    with open('merged.pdf', 'wb') as output_pdf:
        merger.write(output_pdf)

裁剪PDF页面

PyPDF2并不直接支持裁剪页面,但你可以通过提取页面的部分内容并创建一个新的页面来实现这一功能。以下是一个简单的示例,演示如何裁剪页面的上半部分:

import PyPDF2

# 使用PyPDF2裁剪PDF页面,通过提取页面的部分内容并创建一个新的页面来实现这一功能
if __name__ == '__main__':
    # 打开 PDF 文件
    with open('example.pdf', 'rb') as file:
        reader = PyPDF2.PdfReader(file)

        # 创建一个 PDF 写入器对象
        writer = PyPDF2.PdfWriter()

        # 获取第一页
        page = reader.pages[0]

        # 定义裁剪区域(左下角和右上角的坐标)
        # 表示裁剪区域的左下角和右上角坐标
        cropbox = page.cropbox
        x_lower_left = cropbox.lower_left[0]
        y_lower_left = cropbox.lower_left[1] + (cropbox.upper_right[1] - cropbox.lower_left[1]) / 2
        x_upper_right = cropbox.upper_right[0]
        y_upper_right = cropbox.upper_right[1]

        # 设置裁剪区域(左下x, 左下y, 右上x, 右上y)
        page.cropbox.lower_left = (x_lower_left, y_lower_left)
        page.cropbox.upper_right = (x_upper_right, y_upper_right)
        writer.add_page(page)

        # 将裁剪后的 PDF 写入到一个新文件
        with open('cropped_example.pdf', 'wb') as output_pdf:
            writer.write(output_pdf)

加密PDF

from PyPDF2 import PdfWriter
from PyPDF2 import PdfReader

# 使用PyPDF2加密pdf
if __name__ == '__main__':
    writer = PdfWriter()
    with open('example.pdf', 'rb') as file:
        reader = PdfReader(file)
        writer.add_page(reader.pages[0])

    # 设置加密(128位 AES)
    writer.encrypt(
        user_password="password123",
        owner_password=None,
        use_128bit=True
    )

    with open("encrypted.pdf", "wb") as out_file:
        writer.write(out_file)

到此这篇关于Python使用PyPDF2操作PDF的详细教程的文章就介绍到这了,更多相关Python PyPDF2操作PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 对python判断是否回文数的实例详解

    对python判断是否回文数的实例详解

    今天小编就为大家分享一篇对python判断是否回文数的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • python实现二分查找算法

    python实现二分查找算法

    这篇文章主要介绍了python如何实现二分查找算法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下。
    2020-09-09
  • python中Matplotlib绘制直线的实例代码

    python中Matplotlib绘制直线的实例代码

    在本篇文章里小编给大家整理的是一篇关于python中Matplotlib绘制直线的实例代码内容,有兴趣的朋友们可以跟着学习下。
    2021-07-07
  • selenium+python自动化测试之鼠标和键盘事件

    selenium+python自动化测试之鼠标和键盘事件

    这篇文章主要介绍了selenium+python自动化测试之鼠标和键盘事件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • RSA加密算法Python实现方式

    RSA加密算法Python实现方式

    这篇文章主要介绍了RSA加密算法Python实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python列表中常见的一些排序方法

    python列表中常见的一些排序方法

    在Python实际开发中会经常需要用到对列表进行排序,下面这篇文章主要给大家介绍了关于python列表中常见的一些排序方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Python报mongod: error while loading shared libraries: libcrypto.so.1.1解决

    Python报mongod: error while loading shared libraries: l

    这篇文章主要介绍的是Python报mongod: error while loading shared libraries: libcrypto.so.1.1的解决方法,下面文章解决过程,需要的小伙伴可以参考一下
    2022-02-02
  • 简单介绍python封装的基本知识

    简单介绍python封装的基本知识

    这篇文章主要介绍了简单介绍python封装的基本知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python实现压缩和解压缩ZIP文件的方法分析

    Python实现压缩和解压缩ZIP文件的方法分析

    这篇文章主要介绍了Python实现压缩和解压缩ZIP文件的方法,结合具体实例形式分析了Python操作zip文件压缩与解压缩的常用操作技巧,需要的朋友可以参考下
    2017-09-09
  • python查看列的唯一值方法

    python查看列的唯一值方法

    今天小编就为大家分享一篇python查看列的唯一值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论