THotPDF.RegisterDocumentJavaScript

THotPDF

 

AcroForm Support

Registers a document-level named JavaScript function in the Catalog /Names /JavaScript name tree (ISO 32000-1 §7.7.4.4 + §12.6.4.16). AcroForm widget actions, document-open actions, and other JavaScript bodies can invoke the registered function by name through the viewer’s JavaScript engine (Adobe Acrobat, Foxit, and other compatible viewers).

 

Delphi syntax:

procedure RegisterDocumentJavaScript(const Name, Body: AnsiString);

 

Παράμετροι

Το Name είναι το μοναδικό key κάτω από το οποίο αποθηκεύεται το JS source στο name tree. Είναι case-sensitive σύμφωνα με PDF 1.7 §7.9.6. Κενό Name προκαλεί exception

Το Body είναι το raw JavaScript source. Το HotPDF δεν αναλύει ούτε επικυρώνει το JS – ο καλών είναι υπεύθυνος για τη συντακτική ορθότητα. Οι τυπικοί καλούντες περνούν πλήρη function declaration (function GreetUser() { app.alert("hello"); }). Κενό Body προκαλεί exception

 

Περιγραφή

Κάθε κλήση προσθέτει ένα (key, indirect dict) pair στο Catalog /Names /JavaScript name tree κατά το EndDoc. Κάθε registered Body γίνεται δικό του indirect << /S /JavaScript /JS (body) >> dict, έτοιμο να αναφερθεί με name από οποιοδήποτε άλλο action ή JS context. Είναι χρήσιμο για κοινή χρήση library από validation, formatting ή calculation helpers σε πολλά widgets χωρίς διπλασιασμό του source σε κάθε /A action

Η καταχώριση του ίδιου Name δύο φορές προκαλεί exception, ώστε οι καλούντες να μη χάνουν σιωπηρά τον πρώτο ορισμό τους

 

Πύλες συμμόρφωσης

Raises under any non-empty PDFACompliance setting (ISO 19005-1 §6.6.1 / ISO 19005-2 §6.5.1 / ISO 19005-3 §6.5.1 prohibit all JavaScript actions across PDF/A levels). Raises under any non-empty PDFXCompliance setting (ISO 15930 prepress workflows reject interactive scripting). Automatically bumps the document Version to PDF 1.3 when needed; refuses under StrictVersionLock if the chosen version pre-dates 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