从LiveCycle 11填充XFA表单,其中包含空的xfa:datasets和no dd:DataDescription节点

时间:2017-05-09 23:55:26

标签: pdf itext livecycle-designer xfa

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

<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);

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

如果不是XFA而不是AcroField,我不确定这是什么类型的表单。

布鲁诺,我买了你的书,虽然我还没有读到它的封面,但据我所知,它并没有涵盖这种情况。任何人都有关于如何填写这种形式的见解,我将不胜感激。

现在,我想知道是否必须添加模仿动作并设置数据的javascript。由于有许多表单,每个表单都有不同的布局,手动解析所有表单以获取层次结构并自行复制javascript是繁重的,坦率地说我不确定这种方法是否会成功。

1 个答案:

答案 0 :(得分:2)

表单是一个XFA表单,DataDescription丢失的事实很可惜,但它没有异常。数据描述是可选的,不是强制性的。

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

真正的问题是:如果没有数据描述,您如何撰写该XML?

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

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