property FormFieldCount: Integer; // read only
FormFieldCount renvoie le nombre d’annotations de widget de champ AcroForm sur la page actuellement active. Chaque entrée correspond à une annotation de widget (sous-type /Widget avec un type de champ /FT) — champ texte, case à cocher, bouton radio, zone de liste, zone combinée, bouton poussoir ou champ de signature (spécification PDF 1.7, section 12.7)
La valeur est 0 quand Active vaut False, lorsque le document n’est pas un AcroForm (FormType = ftNone) ou lorsque la page ne contient aucun widget interactif. C’est une métrique par page ; les pages peuvent contenir des widgets qui appartiennent au même champ logique défini ailleurs dans l’arbre du document — le PDF autorise un champ à avoir plusieurs emplacements de widget (par exemple une signature visible sur la couverture et la dernière page)
Utilisez FormFieldInfo[Index] avec des indices de 0 à FormFieldCount - 1 pour obtenir un enregistrement TPdfFormFieldInfo : type de champ, nom, nom alternatif, drapeaux, étiquettes d’option, valeur courante, valeur d’export, état coché et taille de police. Pour obtenir un champ par test de coordonnée de page, utilisez plutôt FormFieldAt[X, Y] ou FormFieldInfoAt[X, Y]
FormType = ftXfaFull) portent leur structure interactive hors de l’arbre AcroForm ; FormFieldCount peut quand même rapporter des widgets générés par XFA, mais le rendu XFA lui-même est hors du périmètre de PDFium Delphi Component’AnnotationCount se chevauchent car les widgets sont un sous-ensemble des annotations. Utilisez cette propriété lorsque vous voulez uniquement des champsSetFormField invalide les indices. Relisez FormFieldCount après chaque mutation
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;