procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);
| Index | Integer。現在ページでのフォームフィールドの 0 基準注釈インデックス。0 から AnnotationCount - 1 の範囲で指定します |
| Flags | TPdfFormFieldFlags。フィールドへ適用する TPdfFormFieldFlag 値の集合。PDF 仕様で定義された AcroForm フィールドフラグ(read-only、required、no-export など)に対応します |
SetFormFieldFlags は現在のページの指定した 0 始まり注釈インデックスにあるフォームウィジェット注釈に AcroForm フィールドフラグを書き込みます。フラグはフィールドの対話動作を制御します。たとえば読み取り専用にマークするとユーザーが値を変更できなくなり、必須にマークするとフォームを送信する前に記入が必要であることを示します。
Index パラメーターは FormFieldCount が報告するフォームフィールドインデックスではなく、AnnotationCount が報告する注釈インデックスを参照します。どの注釈インデックスがフォームウィジェットに対応するかは FormFieldInfo または HasFormFieldAt で特定します。インデックスではなくページ座標でフィールドを指定するには SetFormFieldFlagsAt を使います。
フラグ変更はメモリ内ドキュメントで直ちに有効になりますが、SaveAs が呼ばれるまで永続化されません。フォームを入力した後にプログラムでロックするときの推奨手順は:FormField[] 値を割り当て、GenerateFormAppearances を呼び、フラグを読み取り専用に設定し、SaveAs を呼ぶ、です。
var
I: Integer;
begin
Pdf1.PageIndex := 0;
// Mark every form field on the page as read-only
for I := 0 to Pdf1.AnnotationCount - 1 do
if Pdf1.FormFieldInfo[I].FieldType <> fftUnknown then
Pdf1.SetFormFieldFlags(I, [ffReadOnly]);
Pdf1.SaveAs('output_readonly.pdf');
end;