THotPDF Loaded Form Field Methods

Syntax

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;
procedure FlattenFormFields;
procedure SaveLoadedDocument(const TargetFile: TFileName);

Beskrivning

Dessa metoder inspekterar och uppdaterar AcroForm-fält som redan finns i en PDF laddad med LoadFromFile eller BeginIncrementalUpdate. De stöder textfält (/FT /Tx), knappfält (/FT /Btn), choice-fält (/FT /Ch), signaturfält (/FT /Sig) och okända fälttyper

GetLoadedAcroForm returnerar den upplösta inlästa /AcroForm-ordboken för direkt inspektion före fältmetoderna på högre nivå

GetFormFieldDescription läser det laddade fältets alternativa fältnamn /TU, vanligtvis använt av PDF-visare som fältets tooltip. Returnerar en tom sträng när fältet saknar beskrivning

GetFormFieldOptionCount och GetFormFieldOptionValue läser /Opt-arrayen på laddade choice-fält. Enkla string-poster returneras direkt; tvåelementiga optionsarrayar returnerar det första exportvärdet

IsFormFieldReadOnly läser bit 1 i det laddade fältets /Ff-flagga. RenameFormField uppdaterar det laddade fältets lokala /T-namn och avvisar duplicerade fullt kvalificerade namn i samma laddade formulärträd

RemoveFormField tar bort ett laddat formulärfält från AcroForm-fältträdet och tar bort matchande widget annotations från sidorna. FlattenFormFields målar de aktuella synliga värdena från laddade fält till statiskt sidinnehåll och tar sedan bort AcroForm-katalogposten och widget annotations så att den sparade PDF:en inte längre exponerar interaktiva fält

Använd SaveLoadedDocument för att skriva en helt sparad kopia av den laddade objektgrafen efter direkta fältredigeringar. För append-only-flöden som signerade PDF-filer, ladda med BeginIncrementalUpdate, redigera fält och anropa sedan SaveIncrementalUpdate

Exempel

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');
PDF.FlattenFormFields;
PDF.SaveLoadedDocument('FlattenedForm.pdf');

Se även