THotPDF Loaded Form Field Methods

Sintaxe

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

Descrição

Estes métodos inspecionam e atualizam campos AcroForm já existentes em um PDF carregado com LoadFromFile ou BeginIncrementalUpdate. Eles oferecem suporte a campos de texto (/FT /Tx), campos de botão (/FT /Btn), campos de escolha (/FT /Ch), campos de assinatura (/FT /Sig) e tipos de campo desconhecidos

GetLoadedAcroForm retorna o dicionário /AcroForm carregado e resolvido para inspeção direta antes dos métodos de campo de nível superior

GetFormFieldDescription lê o nome alternativo /TU do campo carregado, comumente usado por visualizadores PDF como tooltip do campo. Retorna uma string vazia quando o campo não tem descrição

GetFormFieldOptionCount e GetFormFieldOptionValue leem a matriz /Opt em campos de escolha carregados. Entradas simples de string são retornadas diretamente; matrizes de opção com dois elementos retornam o primeiro valor de exportação

IsFormFieldReadOnly lê o bit 1 da flag /Ff do campo carregado. RenameFormField atualiza o nome /T local do campo carregado e rejeita nomes totalmente qualificados duplicados na mesma árvore de formulário carregada

RemoveFormField exclui um campo de formulário carregado da árvore de campos AcroForm e remove das páginas as anotações de widget correspondentes. FlattenFormFields pinta os valores visíveis atuais dos campos carregados como conteúdo estático de página, depois remove a entrada de catálogo AcroForm e as anotações de widget, de modo que o PDF salvo não exponha mais campos interativos

Utilize SaveLoadedDocument para gravar uma cópia totalmente salva do grafo de objetos carregado após edições diretas de campos. Para fluxos somente de acréscimo, como PDFs assinados, carregue com BeginIncrementalUpdate, edite os campos e depois chame SaveIncrementalUpdate

Exemplo

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

Consulte também