我需要預先填充動態PDF的字段,以便我的用戶可以編輯它並提交回來。如何在加載動態PDF表單(LiveCycle)時將XML加載到數據集中?
我正在使用Adobe ColdFusion CFPDFFORM標籤,它可以將XML數據加載到PDF中並製作新的填充PDF。不幸的是,它也清除< xfa:數據集>標記,它完全清空它!因此所有綁定到數據集的下拉列表都不起作用。這是綁定其中一個的代碼:
<bindItems ref="xfa.datasets.LOVFile.LOV.PreferenceLanguageList.PreferenceLanguage[*]" labelRef="$" valueRef="lic"/>
由於我無法控制CFPDFFORM標籤的工作方式,因此我提出了一種解決方法。使用LiveCycle Designer進行編碼,我將< xfa:數據集>中的任何數據存儲到變量中,並將其加載到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參考寫着「列表項和引用的數據之間的聯繫是有效的。對數據的任何變化導致立即更新列表項。」
任何幫助或指向正確的方向非常感謝。
UPDATE:
使用阿撒託斯的答案,我可以添加項目使用新加載的數據集數據的下拉列表(之後的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。
THX這有助於一定能在動態PDF表單下拉列表從後端數據源。但我想保留它作爲最後的手段,因爲表單中有很多下拉列表,有些會在用戶填寫表單時發生變化。我不得不做一些改變才能使它工作。我更新了這篇文章。 – Seeker
我仍然在尋找一種在數據集更新後將數據集綁定到下拉列表的方法。 – Seeker
您可以使用一個腳本對象,以便它將填充任何下拉列表中的某個數據集,如下所示: 'function populateDropDown(dropdown,datasetName)'' – azathoth