首页 > 解决方案 > 如何使用 Python 填写 PDF 表单

问题描述

我有一个PDF form使用Adobe LiveCycle Designer ES 10.4. 我需要使用它来填充它,Python以便我们可以减少体力劳动。我在网上搜索并阅读了一些文章,其中大部分都围绕pdfrw图书馆,我尝试使用它并从中提取了一些信息,PDF form如下所示

代码

from pdfrw import PdfReader
pdf = PdfReader('sample.pdf')
print(pdf.keys())
print(pdf.Info)
print(pdf.Root.keys())
print('PDF has {} pages'.format(len(pdf.pages)))

输出

['/Root', '/Info', '/ID', '/Size']
{'/CreationDate': "(D:20180822164509+05'30')", '/Creator': '(Adobe LiveCycle Designer ES 10.4)', '/ModDate': "(D:20180822165611+05'30')", '/Producer': '(Adobe XML Form Module Library)'}
['/AcroForm', '/MarkInfo', '/Metadata', '/Names', '/NeedsRendering', '/Pages', '/Perms', '/StructTreeRoot', '/Type']
PDF has 1 pages

我不确定我可以使用多远pdfrw来访问 PDF 表单中的可填写字段并使用Python是否可以填写它们。任何的意见都将会有帮助。

标签: pythonpdfadobepdf-formpdfrw

解决方案


您可以在此处找到表单字段:

pdf.Root.AcroForm.Fields

或在这里

pdf.Root.Pages.Kids[page_index].Annots

这是一个 PdfArray 对象。基本上是一个列表。该字段的名称可在此处找到:

pdf.Root.AcroForm.Fields[field_index].T

其他键包括值 .V 有一堆显示信息,如 .AP.N.Resources 下的字体等

但是,如果您更新字段的值并输出 pdf 文件。它可能仅在字段具有焦点(即单击)时显示该值。

我还没有想出如何解决这个问题。


推荐阅读