|
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');
См. также
|