PDFium Delphi Component Docs

GenerateFormAppearances メソッド

コンポーネント: TPdf  ·  ユニット: PDFium
FPDF_FFLDraw で各ページを描画することにより、全ページのすべてのフォームウィジェットの /AP (アピアランスストリーム) を再生成します。FormField[i] := value の代入に対して推奨される必須の併用呼び出しです。これを呼び出さないと、フォーム値はフィールドにフォーカスがあるときにしか表示されない可能性があり、その後のフラット化操作で値が静かに失われます。すべての FormField[] 代入の後、SaveAs / FlattenPage / FlattenAllPages の前に呼び出してください

構文

procedure GenerateFormAppearances;

説明

GenerateFormAppearances はネイティブの form-fill エディターで編集可能なテキストと combo-box の外観を再構築し、checkbox と radio-button の外観状態を同期します

ネイティブのテキスト/combo-box 代入は form-fill エディターで外観を commit します。raw 辞書編集や最初から外観がないものでは、flatten 前に再生成が必要な場合があります。flatten は editor のライブ表示ではなく保存済み外観 stream を使います

フォームに入力してロックする際の正しいワークフローは、すべての FormField[] 値を代入 → GenerateFormAppearances を 1 回呼び出す → 必要に応じて FlattenPage / FlattenAllPages を呼び出す → SaveAs を呼び出す、の順です。フラット化せずに入力済みフォームを保存するだけであれば、サードパーティ製 PDF ビューアとの互換性を最大限に高めるために、GenerateFormAppearances を呼び出すことが依然として推奨されます

この手続きは 1 回の呼び出しでドキュメント全体を処理します。ページ単位のバリアントはありません

例

begin
  // Assign form field values
  Pdf1.FormField[0] := 'Alice Example';
  Pdf1.FormField[1] := '[email protected]';
  Pdf1.FormField[2] := '2026-05-20';
  
  // Bake appearance streams so values are visible in all viewers
  Pdf1.GenerateFormAppearances;
  
  // Flatten and save a non-editable copy
  Pdf1.FlattenAllPages;
  Pdf1.SaveAs('output_filled_flat.pdf');
end;

継承ウィジェットは一時的にネイティブ編集し、元の親フィールド値を検証しながら復元します。ウィジェットには shadow value を書きません

継承した読み取り専用フィールドではこの編集処理を使えず、エラーになります。GenerateFormAppearances は文書単位のトランザクション処理ではありません

関連項目

FlattenPage, FlattenAllPages, FormField, SaveAs