THotPDF.RegisterDocumentJavaScript

THotPDF

 

AcroForm Support

Registra uma função JavaScript nomeada no nível do documento na name tree /Names /JavaScript do Catalog (ISO 32000-1 §7.7.4.4 + §12.6.4.16). Ações de widgets AcroForm, ações de abertura de documento e outros corpos JavaScript podem invocar a função registrada pelo nome por meio da engine JavaScript do viewer (Adobe Acrobat, Foxit e outros viewers compatíveis).

 

Sintaxe Delphi:

procedure RegisterDocumentJavaScript(const Name, Body: AnsiString);

 

Parâmetros

Name é a chave única sob a qual o código JS é armazenado na name tree. Sensível a maiúsculas conforme PDF 1.7 §7.9.6. Name vazio dispara exceção.

Body é o código JavaScript bruto. O HotPDF não parseia nem valida o JS – o chamador é responsável pela correção sintática. Chamadores típicos passam uma declaração de função completa (function GreetUser() { app.alert("hello"); }). Body vazio dispara exceção.

 

Descrição

Cada chamada adiciona um par (chave, dict indireto) à name tree /Names /JavaScript do Catalog no momento de EndDoc. Cada Body registrado vira seu próprio dict indireto << /S /JavaScript /JS (body) >>, pronto para ser referenciado por nome a partir de qualquer outra ação ou contexto JS. Útil para compartilhar uma biblioteca de helpers de validação, formatação ou cálculo entre muitos widgets sem duplicar o código em cada ação de /A.

Registrar o mesmo Name duas vezes dispara exceção, para que chamadores não percam silenciosamente a primeira definição deles.

 

Gates de conformidade

Dispara exceção sob qualquer configuração não vazia de PDFACompliance (a ISO 19005-1 §6.6.1 / ISO 19005-2 §6.5.1 / ISO 19005-3 §6.5.1 proíbe todas as ações JavaScript nos níveis do PDF/A). Dispara exceção sob qualquer configuração não vazia de PDFXCompliance (os fluxos de prepress da ISO 15930 rejeitam scripting interativo). Promove automaticamente o Version do documento ao PDF 1.3 quando necessário; recusa sob StrictVersionLock se a versão escolhida for anterior ao PDF 1.3.

 

Exemplo

PDF := THotPDF.Create(nil);
PDF.FileName := 'form.pdf';
PDF.BeginDoc;
PDF.RegisterDocumentJavaScript('GreetUser',
  'function GreetUser() { app.alert("Hello"); }');
PDF.RegisterDocumentJavaScript('ValidateNumber',
  'function ValidateNumber(v) { if (isNaN(v)) app.alert("Not a number"); }');
// ... AcroForm widget /A action can then call: ValidateNumber(this.value);
PDF.EndDoc;

 

Availability

HotPDF v2.119.14. Feature do PDF 1.3+; o HotPDF promove automaticamente a Version do documento a menos que StrictVersionLock esteja definido.

 

See also: AcroForm Support, THPDFActionScriptType