ユーザーが編集して送信できるように、動的 PDF のフィールドに事前入力する必要があります。
私は Adobe ColdFusion CFPDFFORM タグを使用しています。このタグは、XML データを PDF にロードして、新しい PDF を作成できます。残念ながら、 <xfa:datasets>タグもクリアされ、完全に空になります! そのため、データセットにバインドされたすべてのドロップダウン リストは機能しません。これは、それらの 1 つをバインドするためのコードです。
<bindItems ref="xfa.datasets.LOVFile.LOV.PreferenceLanguageList.PreferenceLanguage[*]" labelRef="$" valueRef="lic"/>
CFPDFFORM タグがどのように機能するかを制御できないため、回避策を考え出しました。コード化に LiveCycle Designer を使用して、<xfa:datasets> にあるデータを変数に保存し、それを form::initialize でデータセットにロードします。
これは、cfpdform がめちゃくちゃになる前と同じように、データセットを正常にロードするようです。loadXML() call の後、データセットを読み取り、データセット タグが XML データでいっぱいの元の PDF と同じ結果を得ることができます。
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());
}
これは機能しますが、私が探しているソリューションではありません。ドロップダウンの bindItems を設定する JavaScript の方法が必要です。