THotPDF.RegisterDocumentJavaScript

THotPDF

 

AcroForm Support

Catalog の /Names /JavaScript ネームツリー(ISO 32000-1 §7.7.4.4 + §12.6.4.16)に、ドキュメントレベルの名前付き JavaScript 関数を登録します。AcroForm ウィジェットのアクション、ドキュメントオープンアクション、その他の JavaScript 本体は、登録された関数を名前で呼び出せます。ビューアの JavaScript エンジン(Adobe Acrobat、Foxit、その他の互換ビューア)経由で実行されます

 

Delphi 構文:

procedure RegisterDocumentJavaScript(const Name, Body: AnsiString);

 

Parameters

Name は、JS ソースがネームツリーに保存される一意のキーです。PDF 1.7 §7.9.6 に従い大文字小文字を区別します。空の Name は例外を発生させます

Body は生の JavaScript ソースです。HotPDF は JS をパース / 検証しません。構文的な正しさは呼び出し側の責任です。典型的な呼び出しでは完全な関数宣言(function GreetUser() { app.alert("hello"); })を渡します。空の Body は例外を発生させます

 

Description

呼び出しごとに、Catalog の /Names /JavaScript ネームツリーへ(キー, 間接辞書)のペアが EndDoc 時に追加されます。登録された Body はそれぞれ個別の間接辞書 << /S /JavaScript /JS (body) >> になり、他の任意のアクションや JS コンテキストから名前で参照できます。検証、フォーマット、計算ヘルパーのライブラリを多数のウィジェットで共有し、各 /A アクションにソースを複製しないようにするのに便利です

同じ Name を 2 回登録すると例外が発生します。最初の定義が黙って失われるのを防ぐためです

 

準拠ゲート

空でない PDFACompliance 設定では例外を発生させます(ISO 19005-1 §6.6.1 / ISO 19005-2 §6.5.1 / ISO 19005-3 §6.5.1 が、すべての PDF/A レベルで JavaScript アクションを禁止しているため)。空でない PDFXCompliance 設定でも例外を発生させます(ISO 15930 の印刷用ワークフローはインタラクティブスクリプティングを拒否します)。必要に応じてドキュメントの Version を PDF 1.3 に自動引き上げし、StrictVersionLock の下で選択バージョンが PDF 1.3 未満なら拒否します

 

例

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;

 

利用可能バージョン

HotPDF v2.119.14。PDF 1.3+ の機能です。StrictVersionLock が設定されていない限り、HotPDF はドキュメントの Version を自動引き上げします

 

関連項目: AcroForm Support, THPDFActionScriptType