使用 Python 处理 PDF 文件

2025年03月17日 | 阅读 9 分钟

在当今世界,我们都熟悉 PDF 文件,因为它们是最广泛使用的文档数字格式之一。PDF 的全称是“Portable Document Format”(便携式文档格式),它使用“.pdf”扩展名来保存文档文件。这独立于软件、硬件或操作系统,可用于可靠地呈现或交换文档。

PDF 由 Adobe 发明,现在由国际标准化组织维护,是一个开放标准。PDF 文件还可以包含链接、按钮、表单字段、音频、视频或其他业务逻辑,以便与用户或查看者进行更好的交互。

在本教程中,我们将讨论如何执行各种操作

  • 如何从 PDF 中提取文本
  • 如何旋转 PDF 页面
  • 如何合并两个 PDF 文件
  • 如何分割 PDF 文件
  • 如何为 PDF 页面添加水印

我们可以通过使用简单的 Python 脚本来执行所有这些操作。

安装

为了与 PDF 文件进行交互,我们将使用一个第三方模块,即 **PyPDF2**。PyPDF2 是 Python 的一个内置库,用作 PDF 工具包。该模块能够

  • 它可以提取文档信息,例如标题、作者姓名等等。
  • 它可以分割文档文件的页面。
  • 它可以裁剪 PDF 文档文件的页面。
  • 它可以将多个页面合并到 PDF 文档文件中的单个页面。
  • 它可以加密和解密 PDF 文件。

要安装 PyPDF2,我们可以从命令行使用以下命令

该模块的名称是区分大小写的,因此我们需要确保“y”是小写字母,并且模块名称中的所有内容都必须是大写字母。

使用 PyPDF2 模块对 PDF 文件执行操作

在本节中,我们将讨论使用 Python 中的 PyPDF2 模块可以对 PDF 文件执行的各种操作。

1. 如何从 PDF 文档文件中提取文本。

我们可以使用 Python 中的 PyPDF2 模块,通过以下方法从 PDF 文件中提取文本。

方法

要使用 Python 从 PDF 文件中提取文本,我们将遵循以下步骤

步骤 1:我们将以二进制模式打开名为 'exp.pdf' 的 PDF 文件,并将文件对象保存为“**pdf_File_Object**”。

步骤 2:我们将为“**PyPDF2**”模块的“**PDFFileReader**”类创建一个名为“**pdf_Reader**”的对象,然后我们将传递 PDF 文件对象并获取用于读取 PDF 的对象。

步骤 3:要获取 PDF 文档文件中的页数,我们将使用 **numPages**

步骤 4:我们将为 **“PyPDF2”** 模块的 **PageObject** 类创建一个名为“**page_Object**”的对象。PDF 阅读器对象有一个名为 **“getPage()”** 的函数,它接受页码作为参数并返回该页面的对象。

步骤 5:我们将使用 page object 的 extract text 函数从 PDF 页面提取文本。

步骤 6:最后,我们将关闭 PDF 文档文件对象。

代码

输出

No. of pages in the given PDF file:  10
 
GUIDELINES
*
 
 
FOR 
 
RE
-
OPENING OF CAMPUS 
 
IN VIEW OF COVID
-
19 PANDEMIC
 
(FOR 
STUDENTS
)
 
2021
-
22

这将在输出中打印 PDF 文件第一页的文本。

2. 如何旋转 PDF 文件页面

我们可以使用 Python 中的 PyPDF2 模块来旋转 PDF 文件页面。

方法

为了旋转给定 PDF 文件的页面,我们将使用以下步骤

步骤 1:我们将为原始 PDF 创建一个 PDF 阅读器对象。

步骤 2:我们将把旋转后的页面写入新的 PDF 文件。为了写入 PDF 文件,我们将使用 **PyPDF2** 中 **pdfFileWriter** 类的对象。

步骤 3:我们将遍历原始 PDF 文档文件的每个页面。我们将使用 PDF 读取器类的 **getPage()** 函数获取页面对象。然后,我们将使用页面对象的 **rotateClockwise()** 函数旋转页面。

步骤 4:我们将使用 PDF 写入器类的 **addPage()** 函数将页面添加到 PDF 写入器对象,并传递旋转后的页面对象。

步骤 5:然后,我们将把 PDF 页面写入新创建的 PDF 文件。我们可以通过打开新文件对象并使用 PDF 写入器对象的 **write()** 函数来写入 PDF 页面。

步骤 6:我们将关闭原始 PDF 文件对象和新创建的新文件对象。

代码

输出

原始文件

Working with PDF files in Python

旋转后的文件

Working with PDF files in Python

3. 如何合并两个 PDF 文件。

我们可以使用 Python 中的 PyPDF2 模块合并两个 PDF 文件。

方法

要在 Python 中合并两个 PDF 文件,我们将使用以下步骤

步骤 1:为了合并两个 PDF 文件,我们将使用 **PyPDF2** 的一个预建类 **pdfFileMerger**。

步骤 2:然后,我们将使用 **append()** 函数将每个 PDF 的文件对象附加到 PDF 合并器对象。

步骤 3:最后,我们将使用 PDF 合并器对象的 write 方法将 PDF 页面写入输出 PDF 文件。

代码

输出

此代码的输出将是以名为 **combined_exp.pdf** 的合并 PDF 的形式,该文件是通过合并 **exp.pdf** 和 **rotate_exp.pdf** 文件获得的。

Working with PDF files in Python

4. 如何分割 PDF 文件

我们可以根据需要,使用 PyPDF2 模块在 Python 中分割 PDF 文档文件。

在此代码中,我们将不使用新函数或类,而是使用简单的逻辑和迭代。PDF 的分割将根据我们传递的 splits_1 列表创建。

代码

输出

此代码的输出将生成 3 个新的 PDF 文件,这些文件是主 PDF 的分割文件。我们可以在 PDF 文件夹中进行检查。它包含 3 个新的 PDF 文件。

Working with PDF files in Python

5. 如何为 PDF 页面添加水印。

我们可以使用 Python 中的 PyPDF2 模块为 PDF 文档文件的页面添加水印。

方法

在此,我们将遵循与页面旋转示例相同的每个步骤,唯一的区别是

将使用 **add_watermark()** 函数将页面对象转换为水印页面对象。

为了理解 **add_watermark()** 函数的作用,我们可以看以下示例

在此,首先我们创建了 watermark.pdf 文件的 PDF 阅读器对象。对于传递的页面对象,我们使用了 **mergepage()** 函数,该函数传递了 watermark PDF 阅读器对象的第一页的页面对象。这将导致 watermark PDF 叠加到传递的页面对象上。

代码

输出

watermark.pdf

Working with PDF files in Python

user_watermark.pdf 文件

Working with PDF files in Python

上面的代码将生成一个 **user_Watermark.pdf** 文件,其中包含 **water_mark.pdf** 文件中的水印。

结论

在本教程中,我们讨论了如何使用 Python 及其模块的函数和方法来操作 PDF 文件。


下一主题PDF 处理 Python