THotPDF Loaded Form Field Methods

Syntax

function GetLoadedAcroForm: THPDFDictionaryObject;
function HasFormFields: Boolean;
function FormFieldExists(const FieldName: AnsiString): Boolean;
function GetFormFieldCount: Integer;
function GetFormFieldName(FieldIndex: Integer): AnsiString;
function GetFormFieldValue(FieldIndex: Integer): AnsiString; overload;
function GetFormFieldValue(const FieldName: AnsiString): AnsiString; overload;
function GetFormFieldType(FieldIndex: Integer): THPDFLoadedFormFieldType; overload;
function GetFormFieldType(const FieldName: AnsiString): THPDFLoadedFormFieldType; overload;
function GetFormFieldDescription(FieldIndex: Integer): AnsiString; overload;
function GetFormFieldDescription(const FieldName: AnsiString): AnsiString; overload;
function GetFormFieldOptionCount(FieldIndex: Integer): Integer; overload;
function GetFormFieldOptionCount(const FieldName: AnsiString): Integer; overload;
function GetFormFieldOptionValue(FieldIndex, OptionIndex: Integer): AnsiString; overload;
function GetFormFieldOptionValue(const FieldName: AnsiString; OptionIndex: Integer): AnsiString; overload;
function IsFormFieldReadOnly(FieldIndex: Integer): Boolean; overload;
...

Beschreibung

Diese Methoden überprüfen und aktualisieren AcroForm-Felder, die bereits in einer mit LoadFromFile oder BeginIncrementalUpdate geladenen PDF-Datei vorhanden sind; sie unterstützen Textfelder (/FT /Tx), Schaltflächenfelder (/FT /Btn), Auswahlfelder (/FT /Ch), Signaturfelder (/FT /Sig) und unbekannte Feldtypen

GetLoadedAcroForm gibt das aufgelöste, geladene /AcroForm-Wörterbuch für Aufrufer zurück, die eine direkte Überprüfung des Wörterbuchs vor der Verwendung der übergeordneten Feldmethoden benötigen

HasFormFields gibt an, ob das geladene PDF oder das aktuelle in Bearbeitung befindliche Dokument AcroForm-Felder enthält; FormFieldExists prüft einen geladenen Feldbaum oder die Erstellungsfeldliste anhand des Feldnamens, ohne eine Ausnahme auszulösen, wenn das Feld nicht vorhanden ist

GetFormFieldDescription liest den alternativen Feldnamen /TU des geladenen Felds, der von PDF-Viewern häufig als Feld-Tooltip verwendet wird; es wird eine leere Zeichenfolge zurückgegeben, wenn das Feld keine Beschreibung hat

GetFormFieldOptionCount und GetFormFieldOptionValue lesen das /Opt-Array bei geladenen Auswahlfeldern aus; einfache String-Einträge werden direkt zurückgegeben; zweielementige Options-Arrays geben den ersten Exportwert zurück

IsFormFieldReadOnly liest Bit 1 des /Ff-Flags des geladenen Felds aus; RenameFormField aktualisiert den lokalen Namen /T des geladenen Felds und weist doppelte, vollqualifizierte Namen im selben geladenen Formularbaum ab

RemoveFormField löscht ein geladenes Formularfeld aus dem AcroForm-Feldbaum und entfernt die entsprechenden Widget-Anmerkungen von deren Seiten; FlattenFormFields zeichnet die aktuellen sichtbaren Werte geladener oder in Bearbeitung befindlicher Felder in statischen Seiteninhalt, entfernt anschließend den AcroForm-Katalogeintrag sowie die Widget-Anmerkungen, sodass das gespeicherte PDF keine interaktiven Felder mehr enthält; es wird die Anzahl der geglätteten (flattened) Felder zurückgegeben, oder Null, wenn keine Formularfelder vorhanden waren

Verwenden Sie SaveLoadedDocument, um nach direkten Feldänderungen eine vollständig gespeicherte Kopie des geladenen Objektgraphen zu schreiben; für Append-Only-Workflows wie signierte PDFs laden Sie das Dokument mit BeginIncrementalUpdate, bearbeiten die Felder und rufen anschließend SaveIncrementalUpdate auf

Beispiel

PDF.LoadFromFile('InputForm.pdf');
for I := 0 to PDF.GetFormFieldCount - 1 do
  Writeln(PDF.GetFormFieldName(I), ' = ', PDF.GetFormFieldValue(I));

for I := 0 to PDF.GetFormFieldOptionCount('Plan') - 1 do
  Writeln('Plan option ', I, ': ', PDF.GetFormFieldOptionValue('Plan', I));

Writeln('Customer description: ', PDF.GetFormFieldDescription('CustomerName'));
PDF.SetFormFieldValue('CustomerName', 'Bob');
PDF.SetFormFieldReadOnly('CustomerName', True);
PDF.RenameFormField('CustomerName', 'ClientName');
PDF.RemoveFormField('Approved');
PDF.SaveLoadedDocument('UpdatedForm.pdf');
PDF.LoadFromFile('UpdatedForm.pdf');
if PDF.HasFormFields then
  Writeln('Plan exists: ', PDF.FormFieldExists('Plan'));
FlattenedCount := PDF.FlattenFormFields;
PDF.SaveLoadedDocument('FlattenedForm.pdf');

Siehe auch