如何在动态PDF表单(LiveCycle)中加载XML加载到数据集中?

时间:2011-07-27 18:10:09

标签: pdf livecycle xfa dynamicpdf

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

我正在使用Adobe ColdFusion CFPDFFORM标记,该标记可以将XML数据加载到PDF中并生成新的填充PDF。不幸的是,它还会清除< xfa:datasets> 标记,它会完全清空它!因此,绑定到数据集的所有下拉列表都不起作用。这是绑定其中一个的代码:

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

由于我无法控制CFPDFFORM标签的工作方式,因此我提出了一种解决方法。使用LiveCycle Designer进行编码,我将&lt; xfa:datasets&gt; 中的任何数据存储到变量中,然后将其加载到form :: initialize的数据集中。

这似乎可以很好地加载数据集,就像在cfpdform搞砸之前一样。在调用loadXML()之后,我可以读取数据集并获得与原始PDF相同的结果,其数据集标记中包含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方法来设置下拉列表的bindItem。

2 个答案:

答案 0 :(得分: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  

告诉我它是否适合你

答案 1 :(得分:0)

也许这就是你要找的东西?

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

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