property FormFieldInfo[Index: Integer]: TPdfFormFieldInfo; // read only
FormFieldInfo renvoie un enregistrement instantané TPdfFormFieldInfo pour l’annotation de widget de champ de formulaire à l’Index de base 0 sur la page actuellement active. L’enregistrement fournit une vue fortement typée d’un widget de champ AcroForm sans avoir à casser le handle FPDF_ANNOTATION sous-jacent. La section 12.7 de la spec PDF 1.7 définit les types et drapeaux de champ sous-jacents
L’enregistrement porte le Name du champ (chemin entièrement qualifié à travers tout groupe de champ parent, par ex. "order.shipto.address"), l’AlternateName utilisé pour les infobulles accessibles, l’énumération FieldType (fiPushButton, fiCheckBox, fiRadioButton, fiTextField, fiListBox, fiComboBox, fiSignature ou fiUnknown), le Flags sous forme de bits (ffReadOnly, ffRequired, ffNoExport, …), l’ExportValue tel qu’écrit dans un export FormData, le drapeau Checked pour les champs booléens, le FontSize utilisé pour le rendu, et les tableaux d’ensemble d’options OptionLabels / OptionSelected employés par les zones combinées et les zones de liste. Les widgets de bouton radio appartenant à un groupe remplissent en outre GroupCount et GroupIndex
Les indices valides vont de 0 .. FormFieldCount - 1. L’enregistrement est un type valeur ; la modification de ses champs ne réécrit pas le document. Pour changer la valeur d’un champ, affectez via FormField[Index] ; pour modifier le masque de bits de drapeaux, appelez SetFormFieldFlagsAt. La lecture est paresseuse — PDFium décode les noms de champs Unicode, les étiquettes d’option et les valeurs d’export à la demande — donc mettez le résultat en cache quand vous itérez plusieurs fois sur de nombreux champs
| Index | Index de widget de base 0 sur la page courante (0 .. FormFieldCount - 1) |
Name pour dédupliquer entre les pagesfiSignature) exposent Name et le rect mais pas d’octets de signature ; utilisez Signature[I] au niveau document pour obtenir le contenu PKCS#7GroupCount / GroupIndex pour les distinguerFormFieldCount vaut 0 et cet indexeur n’est jamais appelable
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;