如何使用PyPDF2更新字段

时间:2017-04-21 13:45:38

标签: python pypdf2

我试图制作一个pdf生成器,我几乎就在那里,但无法弄清楚更新表单字段的最后一步。

我在使用Python 3.6的Windows环境中使用PyPDF2

第一步是下载pdf(其中有很多,虽然它们都非常相似,但它们都有相同的表单字段)。然后,以下代码将打开pdf并编写一个新代码。我的信念是,如果我更新表单字段的字典并将该字典写入新文件,那么它将进行我想要的更改。问题是我无法解决如何使更新的字典生效。

pdf = open(file, 'rb')
flObj = PdfFileReader(pdf)
flObj.decrypt(password)
dict = flObj.getFormTextFields()
writer = PdfFileWriter()
outputstream = open(my_file, 'wb')
dict['DB_Code'] = '2809785' #as an example
for i in range(flObj.getNumPages()):
    writer.addPage(flObj.getPage(i))
writer.write(outputstream)
outputstream.close()

我可以在PyPDF2的documentation中看到有updatePageFormFieldValues(页面,字段)但是getFormTextFields函数返回的字典并没有给出它应用的页面(字段是传播的)在PDF格式的4页上总是如此),所以我不太确定如何应用它。

我已经查看了许多其他问题和解决方案,例如this,但不要觉得它们符合我的需求。

提前致谢。

1 个答案:

答案 0 :(得分:0)

所以答案似乎是我只需查看文件并按页面手动查找字段。值得庆幸的是,这些字段并没有改变文件之间的位置。

似乎确实存在一个错误(通常使用pdf?),而不会重绘pdf文件。如果单击该字段,可以看到PyPDF2输入的新文本,但是必须手动复制和粘贴才能永久查看该更改。