自動 XFA ネイティブ PDF 生成
ユニット: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF は、XDP バイトとアプリケーション指定の TrueType フォントから直接、入力 PDF や準備済みフィールドスロットなしで新しいネイティブ PDF を生成します
アダプタは既存の XFA バインディング、繰り返しインスタンス、ページ分割の各レイアウトコールバックを消費し、実際の埋め込みフォントアピアランスストリームを持つネイティブページと AcroForm オブジェクトグラフを構築します
テキスト、数値、日付、パスワードの各フィールド、プッシュボタン、コンボとリストの選択、チェックボックスとラジオグループ、静的テキスト、rectangle、line、arc、インライン PNG・JPEG 画像の draw が消費されます。署名と追加の draw コンシューマには、さらなるアダプタ統合が必要です
選択肢とブールの作成は、表示値とエクスポート値の分離、編集可能・複数選択の動作、ネイティブアピアランス状態、独立した繰り返しラジオグループを保持します
ブールスタイルとキャプションは、実際のベクターマーカー、サイズ、アウトラインの色と太さ、Unicode キャプション領域、第 3 のチェックボックス状態を消費します
ネイティブグラフィックと画像は、実際のベクターパス、PNG サンプルフォーマットと透過、ベースライン・プログレッシブ JPEG、物理アスペクト、アフィン配置を消費します
パスワードはネイティブフィールド値を保持したままマスク付きアピアランスを使います。ドキュメント全体の Editable と実効的な XFA readOnly アクセスがネイティブフィールドフラグを決めます
XFA のポイント座標は左上原点を使い、ネイティブウィジェット矩形と draw 平行移動へ 1 回変換されます。別々の繰り返し出現は、レイアウトエンジンから異なるネイティブフィールド名を受け取ります
ネイティブの /AP、/DR、/DA リソースは、指定フォントと実効的なサイズ、色、配置で生成されます。指定フェイスがすべてのフィールドに使われるため、この段階ではタイプフェイスの選択と複数スタイルフェイスはアプリケーションの責務です
ドキュメントがそのイベントを必要とする場合は、TXFAWidgetRuntime でライフサイクルやインタラクションイベントを実行し、生成の前に結果の XDP を保存します。アダプタの ScriptOptions が flatten エンジンの calculate と validate 処理を制御します
準備と上限
TXFAHeadlessPDFOptions は、XDP とフォントのバイト、出力とオブジェクトのバイト、オブジェクトとページの数、フィールド、UTF-16 グリフユニットの合計に上限を設けます
オブジェクト、ページ、グリフの各予算は対応する割り当ての前に検査されます。埋め込み検査はフォントと画像ストリームの合計に、画像デコーダーは作業バッファに上限を課し、ネイティブシリアライズはオブジェクト数と候補全体のバイト上限を強制します
キャンセルはグラフ作成、アピアランス生成、シリアライズ全体で検査されます。すべての準備失敗は、出力先ストリームの位置、長さ、既存バイトを変更しません
候補全体は、出力先への 1 回の WriteBuffer 呼び出しの前にメモリ内で準備されます。出力先の I/O エラーは伝播し、呼び出し側ストリームの動作次第で部分的な書き込みを残すことがあります
出力は新しい未署名ドキュメントです。インポートされた暗号化、既存の署名、ソースリビジョンの保持は、ネイティブドキュメントインポートとリビジョン API の管轄です
受け入れ
Tests/Linux/XFAHeadlessCreationTests.pas は、実際の繰り返し・ページ分割・全体読み取り専用ドキュメント、イベントで変更された保存済み XDP ドキュメント、スタイル付き Unicode draw ドキュメントを、リーダー UI を開かずに生成します
Tests/Linux/Verify-XFAHeadlessCreation.py は、pypdf でネイティブ値、フィールドフラグ、ページ所有、/AP と埋め込みフォントリソースを、MuPDF で実際のテキストと描画アピアランスピクセルを独立に検証します
Tests/Linux/XFAHeadlessChoiceTests.pas と Verify-XFAHeadlessChoice.py は、実際の選択肢の値とフラグ、ラジオ親と繰り返しスコープ識別子、予約エクスポート状態、ランタイムの保存/再ロードとロールバック、描画された選択ピクセルを追加します
TXFAHeadlessPDFResult は実際のネイティブグラフとシリアライズ数を報告します