|
Registrira poimenovano funkcijo JavaScript na ravni dokumenta v drevesu imen Catalog /Names /JavaScript (ISO 32000-1 §7.7.4.4 + §12.6.4.16). Dejanja widgetov AcroForm, dejanja ob odprtju dokumenta in druga telesa JavaScript lahko registrirano funkcijo po imenu pokličejo prek pogona ‘JavaScript’ bralnika (Adobe Acrobat, Foxit in drugi združljivi bralniki).
Delphi syntax:
procedure RegisterDocumentJavaScript(const Name, Body: AnsiString);
Parameters
Name je edinstven ključ, pod katerim je izvor JS shranjen v drevesu imen. Občutljivo na velikost črk po PDF 1.7 §7.9.6. Prazno Name sproži izjemo
Body je surova izvorna koda JavaScript. HotPDF JS-ja ne razčlenjuje in ne preverja – za skladenjsko pravilnost odgovarja klicatelj. Običajni klicatelji podajo celotno deklaracijo funkcije (function GreetUser() { app.alert("hello"); }). Prazen Body sproži izjemo.
Description
Vsak klic doda par (ključ, posredni slovar) v drevo imen Catalog /Names /JavaScript ob EndDoc. Vsak registriran Body postane lasten posredni slovar << /S /JavaScript /JS (body) >>, pripravljen za sklicevanje po imenu iz katerega koli drugega dejanja ali konteksta JS. Uporabno za deljenje knjižnice pomočnikov za validacijo, oblikovanje ali izračune med številnimi widgeti, ne da bi bilo treba izvorno kodo podvajati v vsakem dejanju /A.
Registering the same Name twice raises so callers do not silently lose their first definition.
Compliance gates
Sproži izjemo pri vsaki neprazni nastavitvi PDFACompliance (ISO 19005-1 §6.6.1 / ISO 19005-2 §6.5.1 / ISO 19005-3 §6.5.1 prepovedujejo vsa dejanja JavaScript na vseh ravneh PDF/A). Sproži izjemo pri vsaki neprazni nastavitvi PDFXCompliance (delovni tokovi predtiska po ISO 15930 interaktivnih skript ne dopuščajo). Po potrebi samodejno dvigne Version dokumenta na PDF 1.3; pri StrictVersionLock zavrne, če je izbrana različica starejša od PDF 1.3.
Primer
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
|