【发布时间】:2021-02-23 13:27:17
【问题描述】:
我需要处理一些 PDF 文件并将它们的表单字段内容添加到数据库中。
此文档没有设置安全方法,我可以在 PDF 查看器文档属性中看到。
我尝试了我找到的建议here。
当我使用 pdfminer(或 pdfminer.six)进行测试时,我没有收到错误消息,但它没有检索到任何字段。
使用 PyPDF2,我收到错误消息:“文件尚未解密。”
这是pdfminer代码:
import sys
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdftypes import resolve1
fname=r'D:\Atrium\Projects\CTFC\psgf\database\19022021\formulari-dinamic-redaccio-plans-simples-gestio-forestal_Filled.pdf'
fp = open(fname, 'rb')
parser = PDFParser(fp)
doc = PDFDocument(parser)
fields = resolve1(doc.catalog['AcroForm'])['Fields']
for i in fields:
field = resolve1(i)
name, value = field.get('T'), field.get('V')
print('{0}: {1}'.format(name, value))
print('Done!')
示例文件可以在here下载。
如何获取字段名和内容?
【问题讨论】:
-
您的示例文件包含一个 XFA 表单,即不是您要查找的普通 AcroForm 表单定义。带有 XFA 表单的 PDF 是一种已弃用的技术。
-
谢谢!但是,PDF 表单已经填写完毕,我该如何继续访问数据字段,或者您知道是否有任何工具可以在 Acroform 中转换 XFA?
-
嗯,本质上,xfa 表单定义是一个整体嵌入或部分分离的 xml 文件。您可以提取它并从 xml 中读取数据。它位于 AcroForm 字典中,作为键 XFA 的值。