使用 Python 创建交互式 PDF 表单

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

Python 提供了不同的功能来处理 PDF 文件,我们在前两篇关于使用 Python 处理 PDF 文件的教程中已经讨论了很多内容。在本教程中,我们将了解如何使用 Python 编程语言创建 PDF 文件中的交互式表单。

但在我们开始之前,我们还将讨论一个 Python 工具包,它允许我们创建交互式表单,该工具包称为 **ReportLab** 工具包。

了解 Python 中的 ReportLab 工具包

Python 的 **ReportLab** 工具包允许程序员创建交互式且可填写的表单。PDF 标准通常包含丰富的交互式元素。**ReportLab** 工具包并不支持所有这些元素;但是,它涵盖了其中大部分。在下一节中,我们将了解以下控件:

  1. Checkbox
  2. 收音机
  3. 选择
  4. 列表框
  5. 文本字段

所有已列出的控件都是通过调用 **canvas.acroform** 属性上的不同方法来开发的。请注意,每个文档只能有一个表单。让我们来了解一下 ReportLab 工具包的这些控件。

了解复选框控件

**复选框**控件顾名思义。它是一个小方框,我们可以用它来勾选表单中显示的项。**Reportlab** 支持复选框的不同勾选样式,因此当复选框被选中时,它的外观可以根据我们设置的样式而有所不同。

现在,让我们通过一个简单的示例来了解其中一些参数是如何工作的

示例

输出

Creating Interactive PDF forms using Python

说明

正如我们在上面的代码片段中所见,我们已从 **ReportLab** 库的不同模块导入了不同的函数。然后我们设置了名称并在工具提示中设置了与控件名称匹配的内容。然后我们设置了它的位置和其他一些东西。我们可以调整复选框边框的宽度或关闭边框。但是,如果关闭它,复选框可能会变得不可见,所以我们可能需要通过 **fillColor** 为其设置背景颜色。我们为每个复选框将 **buttonStyle** 设置为一些独特的内容。

了解单选按钮控件

**单选按钮**控件与复选框类似,尽管单选按钮属于一个组,在该组中我们一次只能选择一个单选按钮。复选框很少限于每组只允许一个复选框。**ReportLab** 工具包不提供一个方法来显式地将一组单选按钮组合在一起。该工具包仅提供隐式分组方式。这句话的意思是,如果我们一个接一个地创建一系列单选按钮,它们将被分组在一起。

现在,让我们通过下面的简单示例来理解这一点

示例

输出

Creating Interactive PDF forms using Python

说明

在上面的代码片段中,我们已从 **ReportLab** 工具包的不同模块导入了所需的函数。然后我们定义了一个函数并创建了一个新的 PDF 文件。然后我们为 PDF 文件定义了不同的单选按钮并保存了文件。最后,我们调用了这个函数。

一旦我们执行了上面的代码片段,我们就会发现程序只返回了三个单选按钮。这是因为我们需要为每个单选按钮创建两个具有相同名称但具有不同值和部分的 arequired。文档没有说明原因,但我们可以假设这是为了支持 **ReportLab** 工具包跟踪控件的“选中”状态。这还允许我们更改单选按钮在选中或取消选中时的外观。

了解选择控件

**选择**控件基本上是一个组合框,当用户单击它时会显示一个下拉列表。这使得用户可以选择下拉列表中的一个或多个选项,具体取决于我们设置的 **fieldFlags**。如果我们在 **fieldFlags** 中插入“edit”,那么用户就可以编辑选择控件中的元素。

让我们通过以下示例来理解在 PDF 文档中使用**选择**控件

示例

输出

Creating Interactive PDF forms using Python

说明

在上面的代码片段中,我们已从 **ReportLab** 工具包的不同模块导入了所需的函数。然后我们定义了一个函数并创建了一个新的 PDF 文件。然后我们创建了两个具有略微不同样式的**选择**控件并保存了文件。请记住在函数中包含“value”参数;否则,程序将返回一个奇怪的错误,该错误与缺少参数无关。最后,我们调用了这个函数。

了解列表框控件

**列表框**控件与选择控件有些相似,不同之处在于**列表框**被视为一个可滚动框而不是组合框。我们可以使用 **fieldFlags** 参数,该参数支持用户从列表框中选择一个或多个元素。

现在,让我们通过以下示例来了解在创建交互式 PDF 表单中使用**列表框**控件

示例

输出

Creating Interactive PDF forms using Python

说明

在上面的代码片段中,我们已从 **ReportLab** 工具包的不同模块导入了所需的函数。然后我们定义了一个函数并创建了一个新的 PDF 文件。然后我们创建了具有略微不同样式的**列表框**控件并保存了文件。上面的示例与我们创建选择控件的上一个示例非常相似。这里的主要区别在于**列表框**控件与选择控件的外观;否则,这两个控件基本相同。

了解文本字段控件

**文本字段**是一个文本输入控件。我们可以在表单中看到这些**文本字段**控件来填写姓名、地址等条目。**文本字段**的大部分参数与我们在前面控件中看到的相同。

让我们通过以下示例来理解这一点

示例

输出

Creating Interactive PDF forms using Python

说明

在上面的代码片段中,我们已从 **ReportLab** 工具包的不同模块导入了所需的函数。然后我们定义了一个函数并创建了一个新的 PDF 文件。然后我们创建了具有略微不同样式的**文本字段**控件并保存了文件。正如我们所见,我们创建了一系列具有不同设置的文本字段。此外,我们还更改了其中几个字段的边框和背景颜色。然后我们还包含了一些相当标准的。我们还利用了 **width** 参数来更改文本字段的宽度。