1

ユーザーが編集して送信できるように、動的 PDF のフィールドに事前入力する必要があります。

私は Adob​​e 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 の方法が必要です。

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 に答える