XFA ホストモデル

TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript を有効にすると、同梱の QuickJS エンジン経由でステートフルな xfa.host モデルを使えます

ランタイムを作成する前に TXFAWidgetRuntimeOptions.HostModel でアプリケーションメタデータを設定し、現在の状態はTXFAWidgetRuntime.HostModel から読み取ります

プロパティ

プロパティ動作
name, version, appType, platform, variation, languageホストアプリケーションが供給する読み取り専用のアプリケーションメタデータ
numPages実際のレイアウトページ数(読み取り専用)。フィールドウィジェット外に配置されたコンテンツも含みます
currentPage0 起点の現在ページ。numPages に対して検証されます。フィールドへのフォーカスでそのページが選ばれます
titleUnicode のランタイムタイトル。MaxValueChars で制限され、トランザクションとともに公開されます
calculationsEnabled自動計算スクリプトを制御します。既定は true
validationsEnabled編集された値に対する validate スクリプトを制御します。既定は true

アプリケーションのバージョンはホストアプリケーションを識別します。ライブラリが自身のリリース番号に置き換えることはありません

ホスト状態はランタイムに属します。タイトルとページの変更は元の PDF オブジェクトグラフを変更せず、保存済み XDP データにも符号化されません

ナビゲーション、フォーカス、データリセット

メソッド動作
pageUp(), pageDown()ページ範囲内で移動し、最初または最後のページで止まります
getFocus()ライブなフォーカス中のフィールド出現を返します。フォーカスが無い、削除済み、隠されている場合は null
setFocus(fieldOrSOM)可視のライブフィールド出現へのフォーカスを要求します。null または空テキストでフォーカスを解除します
resetData(paths="")カンマ区切りの SOM リストで選択されたフィールドのテンプレート既定値を復元します。paths が空ならすべてのフィールドが対象です。繰り返しインスタンス数と無関係な出現は保持されます

リセットされたフィールドは編集モードを抜けて有効なインタラクション状態に戻るため、古い編集バッファがリセット値を上書きするのを防ぎます

リセットと Data DOM の loadXML は同じイベントで実行されることがあります。両者の変更はイベントトランザクションを共有し、スクリプトの失敗や予算の枯渇が起きると、再試行の前にデータ値、編集バッファ、ホスト状態、スクリプトオブジェクトのレキシカル状態を復元します

インスタンスマネージャが繰り返しサブフォームを並べ替えてもフィールド識別子はデータ出現に追従し、スナップショット復元はその論理識別子を保持します

フォーカスライフサイクルとトランザクション

ランタイムのフォーカス変更は、計算とレイアウトが落ち着く前に、保留中のソース編集をコミット・検証し、ソースの exit スクリプトを実行し、新しいフィールドを選択し、ターゲットの enter スクリプトを実行します

enter や exit のスクリプトが行うフォーカス要求はターゲットを切り替えられます。1 回のフォーカス処理で 64 交代まで許容し、スクリプト操作と経過時間の予算を共有します

スクリプトは xfa.event.name 経由でアクティビティを見ます。計算と検証は対応するコンテキスト名を受け取ります

公開の FocusWidget と enter/exit の DispatchEvent 呼び出しは同じトランザクションライフサイクルを使います。ClearFocus は exit ライフサイクルの前に現在の編集バッファをキャンセルし、以前のキャンセル動作を保ちます

OnFocusChanged は確定後に順序付きコールバックを公開します。中間のターゲット切り替えはトランザクション内に留まり、スクリプト・検証・予算の失敗はホスト状態、フォーカス、編集バッファ、ドキュメント値、スクリプトレキシカル状態をまとめて復元します

Options := TXFAWidgetRuntimeOptions.Default;
Options.ScriptOptions.EnableJavaScript := True;
Options.HostModel.Name := 'Application';
Options.HostModel.Version := '1.0';
Options.HostModel.Language := 'en-US';
Runtime := TXFAWidgetRuntime.Create(XDPBytes, 595, 842, Options);
xfa.host.title = "Order form";
xfa.host.setFocus("rows[1].quantity");
xfa.host.resetData("rows[1].quantity,rows[1].price");
xfa.host.calculationsEnabled = false;

アプリケーション効果と残る対応範囲

ダイアログ、印刷、外部ナビゲーション、インポート/エクスポート、HTTP 効果は明示的なアプリケーションホストトランスポートと記録済み応答を使います。状態モデル自体が UI やネットワーク操作を起動することはありません

追加のホストダイアログ API、Acrobat ホストプロパティの全種、動的同期リフロー照会、完全な SOM 演算子は、別途の統合対象です

関連 API: TXFAHostModelState、PXFAHostModelState、HPDFXFAHostModelJavaScript、インタラクティブ XFA ウィジェットランタイム