无法获取 PDF 表单字段名称和值

时间:2021-07-25 19:55:18

标签: python forms pdf

我有一个加密的 PDF 文件,我需要获取字段名称和值。我尝试了不同的库,但没有成功。首先,因为我知道密码,所以我使用 pikepdf 解密并保存了文件:

import pikepdf
with pikepdf.open(fname, password=password) as pdf:
    num_pages = len(pdf.pages)
    print("Total pages:", num_pages)
    pdf.save(fname.replace('.pdf','_decrypted.pdf'))

现在我可以在 Adob​​e PDF 查看器中打开并查看解密后的文件了。

尝试使用不同的方式读取字段:

# from https://towardsdatascience.com/how-to-extract-data-from-pdf-forms-using-python-10b5e5f26f70
import PyPDF2 as pypdf
def findInDict(needle, haystack):
    for key in haystack.keys():
        try:
            value=haystack[key]
        except:
            continue
        if key==needle:
            return value
        if isinstance(value,dict):
            x=findInDict(needle,value)
            if x is not None:
                return x
pdfobject=open('pdf_decrypted.pdf','rb')
pdf=pypdf.PdfFileReader(pdfobject)
xfa=findInDict('/XFA',pdf.resolvedObjects)
xml=xfa[7].getObject().getData()

在本例中,我获取 XML 数据,但它不包含任何表单字段数据。

# from https://towardsdatascience.com/how-to-extract-data-from-pdf-forms-using-python-10b5e5f26f70
import PyPDF2 as pypdf
pdfobject=open('pdf_decrypted.pdf','rb')
pdf=pypdf.PdfFileReader(pdfobject)
x=pdf.getFormTextFields()

这里 x = {}

我还尝试了此链接中的替代方法:How to extract PDF fields from a filled out form in Python?

from fillpdf import fillpdfs
x=fillpdfs.get_form_fields("pdf_decrypted.pdf")

这里 x = {} 也是。

我该怎么做?

示例文件可用 here

0 个答案:

没有答案