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

Описание

Тези методи преглеждат и обновяват AcroForm полета, които вече съществуват в PDF, зареден с LoadFromFile или BeginIncrementalUpdate Те поддържат текстови полета (/FT /Tx), button полета (/FT /Btn), choice полета (/FT /Ch), signature полета (/FT /Sig) и неизвестни типове полета

GetLoadedAcroForm връща разрешения зареден /AcroForm речник за извикващ код, който се нуждае от директна проверка на речника преди да използва методите за полета от по- високо ниво

HasFormFields отчита дали зареденият PDF или текущият документ в процес на създаване има AcroForm полета FormFieldExists проверява заредено дърво на полета или списъка с authoring полета по име на поле, без да хвърля изключение, когато полето липсва

GetFormFieldDescription чете алтернативното име на зареденото поле /TU, което обикновено се използва от PDF viewer-и като подсказка за полето Връща празен низ, когато полето няма описание

GetFormFieldOptionCount и GetFormFieldOptionValue четат масива /Opt при заредени choice полета Простите низови записи се връщат директно; двуелементните option масиви връщат първата export стойност

IsFormFieldReadOnly чете бит 1 на флага /Ff на зареденото поле RenameFormField обновява локалното име /T на зареденото поле и отхвърля дублирани напълно квалифицирани имена в същото заредено form дърво

RemoveFormField изтрива заредено form поле от AcroForm дървото на полетата и премахва съответните widget анотации от страниците им FlattenFormFields изрисува текущите видими стойности на заредени или in-progress полета в статично page content, след което премахва AcroForm catalog записа и widget анотациите, така че записаният PDF вече да не излага интерактивни полета Връща броя на изравнените полета или нула, когато не са били налице form полета

Използвайте SaveLoadedDocument, за да запишете напълно записано копие на заредения object graph след директни редакции на полетата За append-only работни потоци като подписани PDF файлове, заредете с BeginIncrementalUpdate, редактирайте полетата и след това извикайте SaveIncrementalUpdate

Example

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');

See Also