XFA ホストモデル
TXFAWidgetRuntimeOptions.ScriptOptions.EnableJavaScript を有効にすると、同梱の QuickJS エンジン経由でステートフルな xfa.host モデルを使えます
ランタイムを作成する前に TXFAWidgetRuntimeOptions.HostModel でアプリケーションメタデータを設定し、現在の状態はTXFAWidgetRuntime.HostModel から読み取ります
プロパティ
| プロパティ | 動作 |
|---|---|
name, version, appType, platform, variation, language | ホストアプリケーションが供給する読み取り専用のアプリケーションメタデータ |
numPages | 実際のレイアウトページ数(読み取り専用)。フィールドウィジェット外に配置されたコンテンツも含みます |
currentPage | 0 起点の現在ページ。numPages に対して検証されます。フィールドへのフォーカスでそのページが選ばれます |
title | Unicode のランタイムタイトル。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 ウィジェットランタイム