python - 如何使用 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
是否可以填写它们。任何的意见都将会有帮助。
解决方案
您可以在此处找到表单字段:
pdf.Root.AcroForm.Fields
或在这里
pdf.Root.Pages.Kids[page_index].Annots
这是一个 PdfArray 对象。基本上是一个列表。该字段的名称可在此处找到:
pdf.Root.AcroForm.Fields[field_index].T
其他键包括值 .V 有一堆显示信息,如 .AP.N.Resources 下的字体等
但是,如果您更新字段的值并输出 pdf 文件。它可能仅在字段具有焦点(即单击)时显示该值。
我还没有想出如何解决这个问题。
推荐阅读
- html - 如何在 CSS 课前添加批量?
- web - 如何以 URL 保持不变的方式将域指向已经存在的 heroku 应用程序
- highcharts - Highchart Bar table 工具提示在悬停工具提示时消失
- java - 为什么 OkHttpClient 连接到本地主机 127.0.0.1:28080
- bazel - Bazel 工作目录与 Maven 不同。如何迁移?
- xaml - 是 Avalonia 风格的选择器
- javascript - 如何在 vuejs 和 webpack 中加载字体文件?
- unit-testing - 有没有办法在禁用 pthreads 的情况下构建 cpputest?
- javascript - 尝试将 Json 时间字符串转换为语言环境时间时,返回无效日期
- django - 从 31353.191 毫秒减少 django 的 CPU 运行时间