gpt4 book ai didi

pdf - 从 PDF 中提取 xdp 或 xfa

转载 作者:行者123 更新时间:2023-12-02 00:25:26 25 4
gpt4 key购买 nike

我使用 Adob​​e LiveCycle Designer 创建了一个 PDF 表单。我现在正努力在填写完 PDF 后以编程方式从 PDF 中提取数据。

我尝试使用 poppler (qt4 绑定(bind),但我想这并不重要)来做到这一点,但显然 poppler 无法处理 XFA 表单。虽然 evince 和 okular 能够显示表单...

据我了解,PDF 包含一个 XDP,而 XDP 又包含 XFA 表单。我的问题是,如何从 PDF 中提取该数据?

如果有库,我的选择是 c++、java、python 或 PHP。

最佳答案

构成 XFA 的 XML 文档(XDP 格式)作为 AcroForm 字典中 XFA 键的值存储(交互式表格词典)。 AcroForm 字典是从 Catalog 字典(PDF 文档的)引用的。

XFA 值可以是流或流数组。如果它是一个流,则它包含整个 XML 文档。如果它是一个数组,则不同的流包含单独的 XDP 数据包。连接它们将得到完整的 XML 文档。

XDP 数据包之一是dataSets 数据包。实际的表单数据将位于此数据包的子元素中:xfa:data。示例:

<xfa:dataSets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
<xfa:data>
<!-- arbitrary XML data, e.g.: -->
<Employee>
<FirstName>John</FirstName>
<Name>Doe</Name>
</Employee>
</xfa:data>
</xfa:dataSets>

任何提供对 PDF 对象的低级访问的 PDF 库都可用于提取 XML 文档。只需浏览目录> AcroForm> XFA即可。

某些 PDF 库可能提供更高级的便捷方法。

(免责声明:我是 iText Software 员工。)例如,使用 iText (Java),您可以简单地执行此操作来获取 org.w3c.dom.Document 形式的 XFA:

PdfReader reader = new PdfReader(pdfFile);
XfaForm xfa = reader.getAcroFields().getXfa();
org.w3c.dom.Document doc = xfa.getDomDocument();

或者只是将dataSets数据包作为org.w3c.dom.Node获取:

org.w3c.dom.Node datasets = xfa.getDatasetsNode();

关于pdf - 从 PDF 中提取 xdp 或 xfa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18587878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com