THotPDF.RegisterDocumentJavaScript

THotPDF

 

AcroForm-Unterstützung

Registriert eine benannte JavaScript-Funktion auf Dokumentebene im Namensbaum /Names /JavaScript des Katalogs (ISO 32000-1 §7.7.4.4 + §12.6.4.16). AcroForm-Widget-Aktionen, Aktionen beim Öffnen des Dokuments und andere JavaScript-Rümpfe können die registrierte Funktion über die JavaScript-Engine des Viewers (Adobe Acrobat, Foxit und andere kompatible Viewer) mit ihrem ‚Namen’ aufrufen.

 

Delphi syntax:

procedure RegisterDocumentJavaScript(const Name, Body: AnsiString);

 

Parameters

Name ist der eindeutige Schlüssel, unter dem der JS-Quelltext im Namensbaum abgelegt wird. Groß-/Kleinschreibung wird unterschieden (PDF 1.7 §7.9.6). Ein leerer Name löst eine Exception aus.

Body ist der rohe JavaScript-Quelltext. HotPDF parst oder validiert das JS nicht – für die syntaktische Korrektheit ist der Aufrufer verantwortlich. Typischerweise übergeben Aufrufer eine vollständige Funktionsdeklaration (function GreetUser() { app.alert("hello"); }). Ein leerer Body löst eine Exception aus.

 

Description

Jeder Aufruf fügt dem Namensbaum /Names /JavaScript des Katalogs bei EndDoc ein Paar (Schlüssel, indirektes Dictionary) hinzu. Jeder registrierte Body wird zu einem eigenen indirekten Dictionary << /S /JavaScript /JS (body) >>, das aus jeder anderen Aktion oder jedem JS-Kontext per Namen referenziert werden kann. Praktisch, um eine Bibliothek von Validierungs-, Formatierungs- oder Berechnungs-Helpern für viele Widgets gemeinsam zu nutzen, ohne den Quelltext in jeder /A-Aktion zu duplizieren.

Registering the same Name twice raises so callers do not silently lose their first definition.

 

Compliance gates

Löst bei jeder nicht leeren Einstellung von PDFACompliance eine Exception aus (ISO 19005-1 §6.6.1 / ISO 19005-2 §6.5.1 / ISO 19005-3 §6.5.1 verbieten über alle PDF/A-Stufen hinweg sämtliche JavaScript-Aktionen). Löst bei jeder nicht leeren Einstellung von PDFXCompliance eine Exception aus (Prepress-Workflows nach ISO 15930 lehnen interaktives Scripting ab). Hebt die Version des Dokuments bei Bedarf automatisch auf PDF 1.3 an; lehnt unter StrictVersionLock ab, wenn die gewählte Version älter als PDF 1.3 ist.

 

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