|
THotPDF-metoder for lastede skjemafelt
Syntaks
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;
function IsFormFieldReadOnly(const FieldName: AnsiString): Boolean; overload;
procedure SetFormFieldValue(FieldIndex: Integer; const Value: AnsiString); overload;
procedure SetFormFieldValue(const FieldName, Value: AnsiString); overload;
procedure SetFormFieldReadOnly(FieldIndex: Integer; ReadOnly: Boolean); overload;
procedure SetFormFieldReadOnly(const FieldName: AnsiString; ReadOnly: Boolean); overload;
procedure RenameFormField(FieldIndex: Integer; const NewName: AnsiString); overload;
procedure RenameFormField(const FieldName, NewName: AnsiString); overload;
procedure RemoveFormField(FieldIndex: Integer); overload;
procedure RemoveFormField(const FieldName: AnsiString); overload;
function FlattenFormFields: Integer;
procedure SaveLoadedDocument(const TargetFile: TFileName);
Beskrivelse
Disse metodene inspiserer og oppdaterer AcroForm-felt som allerede finnes i en PDF lastet med LoadFromFile eller BeginIncrementalUpdate. De støtter tekstfelt (/FT /Tx), knappfelt (/FT /Btn), valgfelt (/FT /Ch), signaturfelt (/FT /Sig) og ukjente felttyper
GetLoadedAcroForm returnerer den oppløste lastede /AcroForm-diksjonæren for kallere som trenger direkte inspeksjon av diksjonæren før de bruker de mer overordnede feltmetodene
HasFormFields rapporterer om den lastede PDF-en eller det pågående dokumentet har AcroForm-felt. FormFieldExists sjekker et lastet felttre eller forfatterens feltliste etter feltnavn uten å kaste feil når feltet mangler
GetFormFieldDescription leser det lastede feltets /TU-alternative feltnavn, som ofte brukes av PDF-visere som feltets verktøytips. Den returnerer en tom streng når feltet ikke har noen beskrivelse
GetFormFieldOptionCount og GetFormFieldOptionValue leser /Opt-matrisen på lastede valgfelt. Enkle strengoppføringer returneres direkte; toelementers alternativmatriser returnerer den første eksportverdien
IsFormFieldReadOnly leser bit 1 i det lastede feltets /Ff-flagg. RenameFormField oppdaterer det lastede feltets lokale /T-navn og avviser dupliserte fullt kvalifiserte navn i det samme lastede skjematreet
RemoveFormField sletter et lastet skjemafelt fra AcroForm-felt-treet og fjerner de samsvarende widget-annotasjonene fra sidene deres. FlattenFormFields maler de gjeldende synlige verdiene i lastede eller pågående felt inn i statisk sideinnhold, og fjerner deretter AcroForm-katalogoppføringen og widget-annotasjonene slik at den lagrede PDF-en ikke lenger viser interaktive felt. Den returnerer antallet flatet ut felt, eller null når ingen skjemafelt var til stede
Bruk SaveLoadedDocument til å skrive en fullstendig lagret kopi av den lastede objektgrafen etter direkte feltredigeringer. For append-only-arbeidsflyter som signerte PDF-er, last inn med BeginIncrementalUpdate, rediger feltene, og kall deretter SaveIncrementalUpdate
Eksempel
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');
Se også
|