当前位置: 首页 > 知识库问答 >
问题:

读取由Adobe LiveCycle Designer创建的PDF中的表单字段

汪修诚
2023-03-14

如何从此PDF文件中获取字段?它是由Adobe LiveCycle Designer创建的动态PDF。如果在web浏览器中打开链接,您可能会看到一个以“请稍候…”开头的页面如果您下载文件并通过Adobe Reader(5.0或更高版本)打开,您应该可以看到所有8页。

因此,当通过PyPDF2阅读时,您会得到一个空字典,因为它将文件呈现为单个页面,就像您通过Web浏览器看到的那样。

def print_fields(path):
    from PyPDF2 import PdfFileReader
    reader = PdfFileReader(str(path))
    fields = reader.getFields()
    print(fields)

您可以使用Java依赖库tika来读取所有8页的内容。然而,结果很混乱,我正在避免Java依赖性。

def read_via_tika(path):
    from tika import parser
    raw = parser.from_file(str(path))
    content = raw['content']
    print(content)

所以,基本上,我可以手动编辑-


共有2个答案

邵旺
2023-03-14

在我的例子中,以下代码有效(来源:ankur garg)

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('CTRX_filled.pdf','rb')
pdf=pypdf.PdfFileReader(pdfobject)
xfa=findInDict('/XFA',pdf.resolvedObjects)
xml=xfa[7].getObject().getData()
堵龙野
2023-03-14
匿名用户

多亏了这个很棒的答案,我成功地使用pdfminer检索了字段。六个。

在目录中导航

 类似资料:
  • 我试图在PDF中创建一个表单字段,用户可以在其中插入图像文件并保存文档,以便图像是持久的(在新的PDF文档中,而不是更改现有文档)。我知道这是可能的,因为我在其他PDF中看到过这样做,但我不知道在iText7 for.NET/C#中应该如何这样做。 使用创建按钮并替换图像的想法,到目前为止我已经尝试了: 希望足以覆盖按钮的外观。但我得到一个错误出现在指示行(不幸的是,它并不比这更具体),并且Sta

  • 我正在尝试从一个具有中文字符的html创建pdf,在这个我有奇怪的概率,来自html的具有中文字符的行并不完全显示在从中生成的pdf中。 以下是我的html: 下面是我的itext渲染器代码: 由于我使用了字体解析器和添加字体,中文字符显示....但是pdf显示缺少内容....该行的最后几个字符(即“上海”中的“AI”和下一个“CN、、、、、、、、、、、、、、、、、、、、、、、、、、“)不可见..

  • 问题内容: 我正在尝试使用Python处理一些使用Adobe Acrobat Reader填写并签名的PDF表单。 我试过了: 该pdfminer演示:它没有任何倾倒在填写数据。 pyPdf:当我尝试使用PdfFileReader(f)加载文件时,它最大化了内核2分钟,而我只是放弃并杀死了它。 Jython和PDFBox:虽然可以很好地工作,但是启动时间却很长,如果这是我唯一的选择,我只会用纯Ja

  • 我需要创建PDF表格,可以用来从用户的输入。它们需要包含下拉框和文本框。请建议哪种软件或工具最适合我的目的

  • 我想获取一个接收器连接器的sink-record-active-count值,这里给出https://docs.confluent.io/current/connect/managing/monitoring.html#sink-task-metrics 我有所有容器运行在docker桌面使用docker compose文件docker ps docker ps 我使用了汇合度量报告器来完成该任务

  • 我需要在Cms后端表单(fields.yaml)中创建一个多选表单字段。我采用了以下方法 选择_字段: 此字段的选项将从模型中调用 一切正常,但当我提交表单时,只有第一个选择的选项作为JSON数据插入到数据库表文本字段中。我希望存储每个选定的选项。我也在模型中声明该字段为Jsonable,即受保护的$Jsonable=['field_name']; 注意:当我使用类型作为检查框列表时,它像我想的那