首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从LiveCycle 11填充XFA表单,它有一个空的xfa:dataset,而没有dd:DataDescription节点

从LiveCycle 11填充XFA表单,它有一个空的xfa:dataset,而没有dd:DataDescription节点
EN

Stack Overflow用户
提问于 2017-05-09 23:55:26
回答 1查看 821关注 0票数 0

我有个pdf。xfa:datasets节点如下所示:

代码语言:javascript
复制
<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"><xfa:data xfa:dataNode="dataGroup" /></xfa:datasets>

因此,我无法提取有关底层模式的任何信息,因此无法生成xml来填充该信息。

pdf使用javascript以下列方式向表中添加行:

this.resolveNode('document_table.Table3._user_input').addInstance(1);

使用iTextSharp在Xfa.TemplateSom中可以找到对表单元素的引用。在DomDocument中,我可以搜索并找到xml中的各种元素,但这正是我陷入困境的地方。似乎与XFA数据没有任何关系,我尝试了XFA工作人员演示,演示确认了pdf没有XFA数据。

如果不是XFA而不是AcroFields,我不确定这是哪种形式。

布鲁诺,我买了你的书,虽然我还没有看过这本书的封面,但据我所知,它并没有涵盖这个场景。任何关于这类表格如何填充的见解,我将不胜感激。

现在,我想知道是否需要追加javascript来模拟操作并设置数据。由于有许多表单,每个表单都有不同的布局,因此手动解析所有表单以获得层次结构并自行复制javascript是非常困难的,而且坦率地说,我不确定这种方法是否会成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-10 06:18:29

表单是XFA表单,DataDescription丢失的事实令人遗憾,但它并不异常。数据的描述是可选的,而不是强制性的。

如果您打算用iText填充表单,那么您应该忘记使用JavaScript来添加行。您不应该混淆手动数据输入(-where)--用户逐行输入数据,手动添加行--与自动数据输入-where(以XML文件的形式提供数据)混淆。如果您有一个有行的表,那么这些行将填充与源XML中的数据行相同的行数。

真正的问题是:如果没有数据描述,是如何组成XML的?

  • 理想的方法是:询问为数据模式创建表单的人。他或她在创建表单时提供了一个数据源,因此他或她知道如何在XML中组织数据。不幸的是,您并不总是能够访问创建表单的人员。
  • 有一种困难的方法:检查XFA XML,查看模板中的数据绑定。如果我被赋予了这个任务,我就需要XFA规范;如果有人问我,我不知道该从哪里开始。
  • 有一种务实的方法:这是我经常使用的解决办法。我在Acrobat中手动填写该表单。我填好所有可能的字段,然后保存填好的表格。然后提取数据XML。我使用该数据XML创建XSD (有相关工具)。这给了我XFA表单所期望的数据描述的近似值。显然,这个XSD并不完美,因为它可能没有捕捉到添加到表单中的所有规则和限制,但是在我遇到的大多数情况下,这已经足够了(当它还不够的时候,对XSD的一些小改动就可以了)。

一旦您知道了XML的预期结构,就不必担心JavaScript了。在自动表单填充的上下文中,处理用户操作的JavaScript与此无关。在用JavaScript填充XFA表单时,唯一重要的JavaScript是自动格式化数据的JavaScript(例如格式化日期、货币、.)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43881546

复制
相关文章

相似问题

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