【问题标题】:How to update a field with PyPDF2如何使用 PyPDF2 更新字段
【发布时间】:2017-09-18 13:20:07
【问题描述】:

我正在尝试制作一个 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(page, fields) 但是 getFormTextFields 函数返回的字典没有给出它适用的页面(这些字段分布在 4 个页面中pdf 总是),所以我不太确定如何应用它。

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

提前致谢。

【问题讨论】:

    标签: python pypdf2


    【解决方案1】:

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

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

    【讨论】:

    • 您是否找到了避免手动复制和粘贴的方法?我也有同样的问题,我想这肯定是一个错误?
    • 不,遗憾的是没有。发布此消息后不久,我换了工作,不再使用 Python。
    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 2021-02-11
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多