property FormFieldInfo[Index: Integer]: TPdfFormFieldInfo; // read only
FormFieldInfo liefert einen Schnappschuss-TPdfFormFieldInfo-Record für die
Formularfeld-Widget-Annotation am 0-basierten Index auf der aktuell aktiven
Seite. Der Record bietet eine streng typisierte Sicht auf ein AcroForm-Feld-Widget, ohne
dass Sie das zugrunde liegende FPDF_ANNOTATION-Handle aufbrechen müssen. Der
PDF 1.7 spec section 12.7 definiert die zugrunde liegenden Feldtypen und Flags
Der Record trägt den Feld-Name (voll qualifizierter Pfad durch alle
übergeordneten Feldgruppen, etwa "order.shipto.address"), den
AlternateName für zugängliche Tooltips, die
FieldType-Aufzählung (fiPushButton, fiCheckBox,
fiRadioButton, fiTextField, fiListBox,
fiComboBox, fiSignature oder fiUnknown), das
Bit-Set Flags (ffReadOnly, ffRequired,
ffNoExport, …), den ExportValue, wie er in einen
FormData-Export geschrieben wird, das Checked-Flag für Boolean-Felder, die
FontSize für das Rendering und die Options-Arrays
OptionLabels / OptionSelected, die Comboboxen und Listboxen verwenden
Radiobutton-Widgets aus einer Gruppe füllen zusätzlich GroupCount
und GroupIndex
Gültige Indizes sind 0 .. FormFieldCount - 1. Der Record ist ein Value-Type;
seine Felder zu ändern schreibt nicht ins Dokument zurück. Um den Wert eines
Felds zu ändern, über FormField[Index] zuweisen; die Flag-Bitmaske ändern Sie über
SetFormFieldFlagsAt. Das Lesen ist lazy — PDFium dekodiert Unicode-Feld-
namen, Options-Labels und Export-Werte bei Bedarf — cachen Sie das Ergebnis also, wenn Sie
viele Felder mehrfach iterieren
| Index | 0-basierter Widget-Index auf der aktuellen Seite (0 .. FormFieldCount - 1) |
NamefiSignature) legen Name und Rechteck
offen, aber keine Signatur-Bytes; an den PKCS#7-Inhalt kommen Sie über das dokumentweite
Signature[I]GroupCount / GroupIndex vergleichen,
um sie auseinanderzuhaltenFormFieldCount 0 und
dieser Indexer ist nie aufrufbar
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;