首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从PDF中提取xdp或xfa

从PDF中提取xdp或xfa
EN

Stack Overflow用户
提问于 2013-09-03 08:50:01
回答 1查看 5.4K关注 0票数 9

我用创建了一个PDF表单。现在,我很难从PDF文件中以编程的方式提取数据,因为它已经被填充了。

我试着使用poppler ( qt4绑定,但我想这并不重要)来做这件事,但显然poppler不能处理XFA表单。虽然evince和okular能够显示表单..。

据我所知,PDF包含一个XDP,而XDP又包含XFA表单。我的问题是,如何从PDF中提取这些数据?

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

EN

回答 1

Stack Overflow用户

发布于 2015-10-23 00:31:48

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

XFA值可以是流或流数组。如果它是一个流,它包含整个XML文档。如果是数组,则不同的流包含独立的XDP数据包。对它们进行连接将给出完整的XML文档。

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

代码语言:javascript
运行
复制
<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文档。只需浏览Catalog > AcroForm > XFA

一些PDF库可能会提供一种更高级的方便方法。

(免责声明:我是iText软件员工。)例如,使用iText (Java),您只需这样做就可以将XFA作为org.w3c.dom.Document

代码语言:javascript
运行
复制
PdfReader reader = new PdfReader(pdfFile);
XfaForm xfa = reader.getAcroFields().getXfa();
org.w3c.dom.Document doc = xfa.getDomDocument();

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

代码语言:javascript
运行
复制
org.w3c.dom.Node datasets = xfa.getDatasetsNode();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18587878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档