property FormFieldCount: Integer; // read only
FormFieldCount는 현재 활성 페이지의 AcroForm 필드 위젯 주석 개수를 반환하며,
각 항목은 위젯 주석 하나(/FT 필드 타입을 가진
/Widget 서브타입)에 대응합니다 — 텍스트 입력, 체크
박스, 라디오 버튼, 리스트 박스, 콤보 박스, 푸시 버튼, 서명 필드가 그 대상입니다(PDF 1.7 스펙
12.7절)
Active가 False이거나, 문서가 AcroForm이 아니거나(FormType = ftNone), 페이지에
대화형 위젯이 없으면 값은 0입니다. 이것은 페이지 단위 지표입니다. 페이지에는 문서 트리의 다른 곳에 정의된 같은 논리 필드에 속한
위젯들이 들어 있을 수 있습니다 — PDF는 하나의 필드가 여러 위젯 배치를 가질 수 있게
허용합니다(예: 표지와 마지막 페이지에 보이는 서명)
0부터 FormFieldCount - 1까지의 인덱스로
FormFieldInfo[Index]를 호출하면 TPdfFormFieldInfo 레코드를 얻습니다:
필드 타입, 이름, 별칭, 플래그, 옵션 레이블, 현재 값, export value,
체크 상태, 폰트 크기가 담깁니다. 페이지 좌표를 히트 테스트해서 필드를 얻으려면 대신
FormFieldAt[X, Y]나 FormFieldInfoAt[X, Y]를 사용하세요
FormType = ftXfaFull)는 대화형 구조를 AcroForm 트리 밖에
둡니다. FormFieldCount는 XFA가 생성한 위젯을 여전히 보고할 수 있지만, XFA 렌더링 자체는 PDFium Delphi Component의 범위 밖입니다AnnotationCount는 겹치는데,
필드만 원한다면 이 프로퍼티를 쓰세요SetFormField로 위젯을 넣거나 빼면 인덱스가 무효화되니
변경할 때마다 FormFieldCount를 다시 읽으세요
var I: Integer;
var Info: TPdfFormFieldInfo;
for I := 0 to Pdf1.FormFieldCount - 1 do
begin
Info := Pdf1.FormFieldInfo[I];
Memo1.Lines.Add(Format('%s = %s', [Info.Name, Info.ExportValue]));
end;