|
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
|