首页 文章

从LiveCycle 11填充XFA表单,其中包含空xfa:datasets且没有dd:DataDescription节点

提问于
浏览
0

我有一个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 Worker演示,并且演示证实pdf没有XFA数据 .

如果它不是XFA而不是AcroFields,我不确定这是什么类型的形式 .

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

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

1 回答

  • 2

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

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

    真正的问题是: How do you compose that XML if there is no data description?

    • 有理想的方法:你问创建表单的人是否有数据模式 . 他或她在创建表单时提供了数据源,因此他或她知道如何在XML中组织数据 . 不幸的是,您并不总是能够访问创建表单的人员 .

    • 有困难的方法:检查XFA XML,然后查看模板中的数据绑定 . 如果给我这个任务,我需要XFA规范;如果有人让我脱下袖口,我不知道从哪里开始 .

    • 这是务实的方式:这是我一直使用的解决方法 . 我在Adobe Acrobat中手动填写表单 . 我填写所有可能的字段,然后我保存填写的表格 . 然后我提取数据XML . 我使用该数据XML来创建XSD(有工具) . 这给了我一个XFA表格所期望的数据描述的近似值 . 显然,这个XSD赢得了足够的,对XSD做了一些小调整就行了 .

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

相关问题