property FormFieldInfo[Index: Integer]: TPdfFormFieldInfo; // read only
FormFieldInfo는 현재 활성 페이지에서 0 기반 Index 위치의 폼
필드 위젯 주석에 대한 스냅샷 TPdfFormFieldInfo 레코드를 반환합니다. 이 레코드는 기반
FPDF_ANNOTATION 핸들을 직접 뜯지 않고도 하나의 AcroForm 필드 위젯을 강타입으로 볼 수 있게 해 줍니다. 기반이 되는 필드 타입과 플래그는 PDF 1.7 스펙
12.7절에 정의되어 있습니다
레코드에는 필드 Name(부모 필드 그룹을 관통하는 완전한 경로, 예:
"order.shipto.address"), 접근성 툴팁에 쓰이는
AlternateName, FieldType 열거형
(fiPushButton, fiCheckBox,
fiRadioButton, fiTextField, fiListBox,
fiComboBox, fiSignature, fiUnknown), 비트 집합인
Flags(ffReadOnly, ffRequired,
ffNoExport, …), FormData 내보내기에 기록되는 ExportValue,
boolean 필드용 Checked 플래그, 렌더링에 쓰이는
FontSize, 그리고 콤보·리스트 박스가 쓰는 옵션 집합 배열
OptionLabels / OptionSelected가 담깁니다
그룹에 속한 라디오 버튼 위젯은 추가로 GroupCount와
GroupIndex를 채웁니다
유효 인덱스는 0 .. FormFieldCount - 1입니다. 레코드는 값 타입이라
필드를 바꿔도 문서에 다시 기록되지 않습니다. 필드 값을 바꾸려면
FormField[Index]로 대입하고, 플래그 비트마스크를 바꾸려면
SetFormFieldFlagsAt을 호출하세요. 읽기는 느긋합니다 — PDFium이 Unicode 필드
이름, 옵션 레이블, export value를 필요할 때 디코딩하므로 — 많은 필드를 여러 번
순회할 때는 결과를 캐싱하세요
| Index | 현재 페이지의 0 기반 위젯 인덱스입니다(0 .. FormFieldCount - 1) |
Name을 쓰세요fiSignature)는 Name과 사각형만 노출하며 서명 바이트는 없고,
PKCS#7 내용이 필요하면 문서 수준 Signature[I]를 사용하세요GroupCount / GroupIndex를 비교하면 구별할 수 있습니다FormFieldCount가 0이라 이 인덱서를
호출할 일 자체가 없습니다
var I, J: Integer;
var Info: TPdfFormFieldInfo;
for I := 0 to Pdf1.FormFieldCount - 1 do
begin
Info := Pdf1.FormFieldInfo[I];
Memo1.Lines.Add(Format('%s [%d] export=%s checked=%s',
[Info.Name, Ord(Info.FieldType), Info.ExportValue, BoolToStr(Info.Checked, True)]));
for J := 0 to High(Info.OptionLabels) do
Memo1.Lines.Add(' ' + Info.OptionLabels[J]);
end;