Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用PyPDF2更新字段_Python_Pypdf2 - Fatal编程技术网

Python 如何使用PyPDF2更新字段

Python 如何使用PyPDF2更新字段,python,pypdf2,Python,Pypdf2,我正在尝试制作一个pdf生成器,我几乎就要完成了,但是我不知道更新表单字段的最后一步是什么 我正在Windows环境中使用PyPDF2和Python 3.6 第一步是下载pdf(其中有很多,尽管它们非常相似,并且都有相同的表单字段)。下面的代码将打开pdf并编写一个新的。我的信念是,如果我更新表单字段的字典并将该字典写入新文件,那么它将做出我想要的更改。问题是我不知道如何使更新后的词典生效 pdf = open(file, 'rb') flObj = PdfFileReader(pdf) flO

我正在尝试制作一个pdf生成器,我几乎就要完成了,但是我不知道更新表单字段的最后一步是什么

我正在Windows环境中使用PyPDF2和Python 3.6

第一步是下载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中看到updatePageFormFieldValues(page,fields),但是getFormTextFields函数返回的字典没有给出它所应用的页面(这些字段在pdf中总是分布在4个页面上),所以我不太确定如何应用它

我已经研究了许多其他问题和解决方案,例如,但是我觉得它们不适合我的需要


提前谢谢。

所以答案似乎是我只需查看文件,然后按页面手动查找字段。谢天谢地,这些字段并没有改变文档之间的位置


在pdf文件未被重画的情况下,确实出现了一个bug(通常是pdf?可能)。如果单击该字段,可以看到PyPDF2输入的新文本,但是必须手动复制和粘贴才能永久看到该更改。

您是否找到了手动复制和粘贴的方法?我也有同样的问题,我想这肯定是个bug?不,很遗憾不是。发布这篇文章后不久,我换了工作,不再使用Python。