|
Zaregistruje pomenovanú funkciu JavaScript na úrovni dokumentu v strome mien Catalogu /Names /JavaScript (ISO 32000-1 §7.7.4.4 + §12.6.4.16). Akcie widgetov AcroForm, akcie pri otvorení dokumentu a ďalšie telá JavaScriptu môžu zaregistrovanú funkciu volať menom cez JavaScript engine prehliadača (viewer’s JS engine: Adobe Acrobat, Foxit a ďalšie kompatibilné prehliadače)
Delphi syntax:
procedure RegisterDocumentJavaScript(const Name, Body: AnsiString);
Parameters
Name je jedinečný kľúč, pod ktorým sa zdroj JS ukladá v strome mien. Rozlišujú sa veľké a malé písmená podľa PDF 1.7 §7.9.6. Prázdne Name vyvolá výnimku
Body je surový zdrojový kód JavaScriptu. HotPDF JS neparsuje ani neoveruje – za syntaktickú správnosť zodpovedá volajúci. Volajúci zvyčajne odovzdá kompletnú deklaráciu funkcie (function GreetUser() { app.alert("hello"); }). Prázdne Body vyvolá výnimku
Opis
Každé volanie pridá do stromu mien Catalogu /Names /JavaScript dvojicu (kľúč, nepriamy dictionary) v čase EndDoc. Každé zaregistrované Body sa stane vlastným nepriamym dictionary << /S /JavaScript /JS (body) >>, pripraveným na odkazovanie menom z akejkoľvek inej akcie alebo kontextu JS. Hodí sa na zdieľanie knižnice pomocných funkcií na validáciu, formátovanie alebo výpočty medzi mnohými widgetmi bez duplikovania zdrojového kódu v každej akcii /A
Registering the same Name twice raises so callers do not silently lose their first definition.
Compliance gates
Vyvolá výnimku pri akomkoľvek neprázdnom nastavení PDFACompliance (ISO 19005-1 §6.6.1 / ISO 19005-2 §6.5.1 / ISO 19005-3 §6.5.1 zakazujú všetky akcie JavaScript na všetkých úrovniach PDF/A). Vyvolá výnimku aj pri akomkoľvek neprázdnom nastavení PDFXCompliance (prepress pracovné postupy ISO 15930 odmietajú interaktívne skriptovanie). V prípade potreby automaticky zvýši Version dokumentu na PDF 1.3; pri StrictVersionLock odmietne, ak je zvolená verzia staršia než PDF 1.3
Example
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. PDF 1.3+ feature; HotPDF auto-bumps the document Version unless StrictVersionLock is set.
See also: AcroForm Support, THPDFActionScriptType
|