使用 Python 操作 PDF

2025年3月17日 | 阅读 7 分钟

在之前的教程中,我们讨论了使用 Python 编程语言的不同包和模块对 PDF 文件可以执行的各种操作。我们学习了可用于操作 PDF 文件的不同 Python 库的工作原理。此外,我们还了解了如何使用 Python 提取文本、图像、表格和 URL。

下面的教程将涵盖一些其他操作来操作 PDF 文件,包括创建 PDF 文件、在 PDF 文件上添加文本、图像和表格等等。

那么,让我们开始吧。

使用 Python 创建 PDF 文件

Python 提供了一项功能,程序员可以直接从代码创建 PDF 文件。我们可以直接将文本、图像、表格和表单从 Python 代码插入到 PDF 文件中。为了实现这一点,Python 编程语言提供了一个名为 reportlab 的库。

但在我们开始使用该库之前,我们有必要安装它。

安装 reportlab 库

我们可以使用 pip 安装程序通过以下命令安装 reportlab

语法

现在,让我们开始实现部分;我们可以执行以下操作

示例

说明

在上述代码片段中,我们从各自的模块导入了所需的函数。然后,我们创建了一个名为 newfile.pdf 的 PDF 文件。在 Canvas() 函数中,我们将 PDF 页面的大小设置为 LETTER 大小,这是 reportlab 库提供的预定义大小。然后,我们使用 save() 函数保存了创建的 PDF 文件。

使用 Python 在 PDF 上添加文本

我们可以借助 reportlab 库轻松添加 PDF 文件。让我们考虑以下示例来理解这一点

示例

输出

Manipulating PDF using Python

说明

在上述代码片段中,我们再次从各自的模块导入了函数。然后,我们创建了一个名为 textfile.py 的 PDF 文件。我们正在设置字体和字体大小,因为我们将在 PDF 文件上写入一些文本。我们借助 reportlab 的预定义函数将 PDF 大小设置为 LETTER,字体设置为 Courier,字体大小设置为 18。然后,我们借助 setFillColor 函数为文本选择了紫色。之后,我们在 PDF 文件上写入了一些文本,指定了文本在 PDF 页面上的位置。最后,我们使用 save() 函数保存了创建的 PDF 文件。因此,我们成功创建了一个 PDF 文件。

使用 Python 在 PDF 上添加图像

我们还可以利用 Python reportlab 库将图像插入到 PDF 文件中。与在 PDF 文件上插入文本相比,插入图像可能是一项繁琐的工作。图像有其独特的尺寸,PDF 文件也一样。因此,管理尺寸和找到图像的最佳位置可能是一项繁琐的工作。

让我们考虑以下示例来理解如何在 PDF 文件上添加图像

示例

输出

Manipulating PDF using Python

说明

在上述代码片段中,我们导入了所需的函数。然后,我们使用 Canvas() 函数创建了一个新的 PDF 文件。然后,我们使用 drawInlineImage() 函数将图像插入到创建的 PDF 文件中。我们指定了图像在目录中的位置以及图像的位置,即 (100, 450),以设置在 PDF 文件上。 reportlab 库将 PDF 文件的左下角位置视为 (0, 0),并以类似的方式管理图像的位置。信纸大小的 PDF 尺寸为 612x792,而 (100, 450) 将是图像在 PDF 文件上的位置。

使用 Python 在 PDF 上添加表格

我们还可以使用 reportlab 库将表格添加到 PDF 文件中。让我们考虑以下示例来理解如何在 PDF 文件上添加表格。

示例

输出

Manipulating PDF using Python

说明

在上述代码片段中,我们创建了一个信纸大小的新 PDF 文件。要存储在表格中的数据在列表 "my_data" 中提供。这里,列表的形状是 5x2。有五行两列。因此,这是将在 PDF 文件上形成的表格。之后,我们定义了表格的边距、网格线、它们的尺寸和格式。我们还使用了 setStyle 函数。也可以参考 reportlab 库的官方文档来创建表格。如果没有定义这些网格线,PDF 上只会按排列顺序显示详细信息;但是,没有用网格线或边框分隔。

使用 Python 突出显示 PDF 中的文本

Python 还为我们提供了一项功能,用于突出显示 PDF 文件中的文本内容,称为 "fitz"。Fitz 是我们可以用来在 PDF 文件上执行文本突出显示的最简单的库。由于我们已经讨论了 fitz 库的安装过程,所以我们直接进入 fitz 库的实现,以便突出显示 PDF 中的文本。

示例

输出

Manipulating PDF using Python

说明

在上述代码片段中,我们导入了 fitz 库。然后,我们使用 open() 函数加载要突出显示的 PDF 文件 my_file.pdf。要突出显示的短语在文本变量中给出。我们突出显示了单词 "Boring"。然后,我们遍历每个页面以查找是否有与该单词的潜在匹配项。如果找到匹配项,我们使用 fitz 中的 add_highlight_annot 函数来突出显示它们。因此,通过这种方式,我们在 PDF 文件上获得了突出显示的文本。

使用 Python 调整 PDF 页面大小

调整页面大小是使用 Python 操作 PDF 文件的另一个示例。有时,可能需要调整 PDF 页面大小,Python 提供了一个名为 PyPDF2 的库,程序员可以使用它执行页面大小调整功能。让我们考虑以下示例来理解这一点

示例

输出

Manipulating PDF using Python

说明

在上述代码片段中,我们导入了所需的库。然后,我们开始读取要调整大小的输入 PDF 文件。然后,我们读取了它的页面。在这里,我们只调整了第一页的大小,所以 getPage 函数的值为 0,表示初始页面。现在,为了调整页面大小,我们使用了 scaleBy 函数并将第 0 页缩放了 0.5。因此,第一页的大小减少了实际尺寸的一半。然后,我们将页面保存到一个新的 PDF 文件 resizedFile.pdf 中。通过这种方式,我们成功地使用 Python 执行了页面大小调整。

使用 Python 将 PDF 文件转换为 CSV

有时,表格数据也以 PDF 格式存在。但是,这些类型的信息不能直接解析。例如,我们不能直接使用 pandas 库处理包含数据框的 PDF 文件,它们必须在处理之前转换为 CSV 或 Excel 格式。由于这是一个相当重要的过程,我们将了解如何将 PDF 文件转换为 CSV 格式。

让我们从安装名为 tabula 的 Python 库开始

安装 tabula 库

我们可以使用 pip 安装程序通过以下命令安装 tabula

语法

现在,让我们借助以下示例来理解 tabula 库在将 PDF 文件转换为 CSV 格式中的实现

示例

说明

在以下代码片段中,我们导入了 tabula 库。然后,我们使用了一个名为 "convert_into" 的一行函数,指定了参数为输入 PDF 文件的路径、文件要转换到的路径、输出文件的格式以及我们想要转换的页数。通过这种方式,我们可以轻松有效地将 PDF 文件转换为 CSV 格式。

使用 Python 等编程语言,我们还可以对 PDF 文件执行许多其他功能。也可以参考官方文档以供参考。