procedure SetFormFieldFlags(Index: Integer; const Flags: TPdfFormFieldFlags);
| Index | 정수. 현재 페이지의 폼 필드에 대한 0부터 시작하는 주석 인덱스입니다. 0부터 AnnotationCount - 1 범위에 있어야 합니다 |
| Flags | TPdfFormFieldFlags. 필드에 적용할 TPdfFormFieldFlag 값 집합입니다. 이는 읽기 전용, 필수, no-export 같은 PDF 규격의 AcroForm 필드 플래그에 해당합니다 |
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;