1

我需要预先填写动态 PDF 的字段,以便我的用户可以对其进行编辑并提交回来。

我正在使用 Adob​​e ColdFusion CFPDFFORM 标签,它可以将 XML 数据加载到 PDF 中并制作一个新的填充 PDF。不幸的是,它也清除了<xfa:datasets>标签,它完全清空了它!所以绑定到数据集的所有下拉列表都不起作用。这是绑定其中之一的代码:

<bindItems ref="xfa.datasets.LOVFile.LOV.PreferenceLanguageList.PreferenceLanguage[*]" labelRef="$" valueRef="lic"/>

由于我无法控制 CFPDFFORM 标签的工作方式,因此我想出了一个解决方法。使用 LiveCycle Designer 进行编码,我将<xfa:datasets>中的所有数据存储 到一个变量中,并将其加载到 form::initialize 中的数据集。

这似乎可以很好地加载数据集,就像 cfpdform 将它们弄乱之前一样。在 loadXML() 调用之后,我可以读取数据集并获得与原始 PDF 相同的结果,其 datasets 标签中充满了 XML 数据。

form1::initialize - (JavaScript, client)
//xfa.host.messageBox("loading xml to datasets");
xfa.datasets.nodes.namedItem("LOVFile").loadXML(LOVFile_var.value,0,1);
Page1.Header.debug.rawValue = xfa.datasets.LOVFile.LOV.PreferenceLanguageList.resolveNode("PreferenceLanguage[2]").value;

问题是下来列表仍然不起作用,他们没有要显示的项目。不知何故,他们对数据集的绑定调用不会刷新?

在 loadXML() 之后还有什么我应该做的吗?bindItems的LiveCycle 引用显示“列表项和引用数据之间的链接处于活动状态。对数据的任何更改都会导致立即更新列表项。

非常感谢任何帮助或指出正确的方向。

更新:

使用 azathoth 的答案,我可以使用来自新加载数据集的数据(在 loadXml() 调用之后)将项目添加到下拉列表。

var oEyeColors = xfa.datasets.LOVFile.LOV.resolveNode("EyeColorList");
var numberOfNodes = oEyeColors.nodes.length;       

var thisValue = "";

for (var i=0; i < numberOfNodes ; i++){
    thisValue  = oEyeColors.nodes.item(i).value;
    if(thisValue == null){
        thisValue = "";
    }
    xfa.resolveNode("Page1.eyeColorDropDownList").addItem(thisValue.toString());

}

这有效,但不是我正在寻找的解决方案。必须有一种 JavaScript 方法来设置下拉列表的 bindItems。

4

2 回答 2

2

我使用此代码执行您指定的操作:

xfa.datasets.loadXML(LOVFile_var.rawValue, false, false); 
xfa.datasets.saveXML();                                 
var yourXML = xfa.datasets.resolveNode("yourXMLRootNodeName");
var numberOfNodes = yourXML.nodes.length;       

for (var i=0; i < numberOfNodes ; i++)
    yourDropDown.addItem(yourXML.nodes.item(i).nodes.item(1).value); // this can change according to what you retrieve in your xml  

告诉我它是否对你有用

于 2011-07-28T17:06:01.437 回答
0

也许这就是你要找的?

使用 LiveCycle ES2.5 从后端数据源预填充动态 PDF 表单中的下拉列表

http://www.adobe.com/devnet/livecycle/articles/prepopulating-dropdown-lists.html

于 2012-03-09T16:25:03.120 回答