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