THotPDF Loaded Form Field Methods

Синтаксис

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

Описание

Эти методы проверяют и обновляют AcroForm fields, уже существующие в PDF, загруженном через LoadFromFile или BeginIncrementalUpdate. Они поддерживают text fields (/FT /Tx), button fields (/FT /Btn), choice fields (/FT /Ch), signature fields (/FT /Sig) и unknown field types

GetLoadedAcroForm возвращает разрешенный загруженный словарь /AcroForm для прямой проверки перед методами полей более высокого уровня

GetFormFieldDescription читает /TU alternate field name загруженного поля, обычно используемое PDF viewers как field tooltip. Если у поля нет description, возвращается пустая строка

GetFormFieldOptionCount и GetFormFieldOptionValue читают массив /Opt у загруженных choice fields. Простые строковые записи возвращаются напрямую; двухэлементные option arrays возвращают первое export value

IsFormFieldReadOnly читает bit 1 флага /Ff загруженного поля. RenameFormField обновляет локальное имя /T загруженного поля и отклоняет повторяющиеся fully qualified names в том же loaded form tree

RemoveFormField удаляет загруженное form field из AcroForm field tree и удаляет соответствующие widget annotations с их страниц. FlattenFormFields рисует текущие видимые значения загруженных полей в статическое page content, затем удаляет AcroForm catalog entry и widget annotations, чтобы сохраненный PDF больше не раскрывал interactive fields

Используйте SaveLoadedDocument, чтобы записать полностью сохраненную копию loaded object graph после прямого редактирования полей. Для append-only workflows, таких как подписанные PDF, загрузите через BeginIncrementalUpdate, отредактируйте поля и затем вызовите SaveIncrementalUpdate

Пример

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

См. также