|
یک تابع JavaScript نامگذاریشده در سطح سند را در درخت نام Catalog /Names /JavaScript ثبت میکند (ISO 32000-1 §7.7.4.4 + §12.6.4.16). اقدامهای ویجت AcroForm، اقدامهای باز شدن سند و سایر بدنههای JavaScript میتوانند تابع ثبتشده را از طریق موتور JavaScript نمایشگر (Adobe Acrobat، Foxit و سایر نمایشگرهای سازگار) با نام فراخوانی کنند
نحو Delphi:
procedure RegisterDocumentJavaScript(const Name, Body: AnsiString);
پارامترها
Name کلید یکتایی است که سورس JS زیر آن در درخت نام ذخیره میشود. طبق PDF 1.7 §7.9.6 به حروف بزرگ و کوچک حساس است. خالی بودن Name خطا ایجاد میکند
Body سورس خام JavaScript است. HotPDF JS را تجزیه یا اعتبارسنجی نمیکند و درستی نحوی بر عهدهٔ فراخواننده است. فراخوانهای معمول یک اعلان کامل تابع (function GreetUser() { app.alert("hello"); }) را میفرستند. خالی بودن Body خطا ایجاد میکند
توضیحات
هر فراخوانی یک زوج (کلید، دیکشنری غیرمستقیم) را در زمان EndDoc به درخت نام /Names /JavaScript کاتالوگ اضافه میکند. هر Body ثبتشده به دیکشنری غیرمستقیم خودش یعنی << /S /JavaScript /JS (body) >> تبدیل میشود تا از هر کنش یا زمینهٔ JS دیگری با نام به آن ارجاع شود. برای بهاشتراک گذاشتن کتابخانهای از کمکمتدهای اعتبارسنجی، قالببندی یا محاسبه بینmany ویجت بدون تکرار مبدأ در هر کنش /A کاربرد دارد.
ثبت دوبارهٔ همان Name استثنا پرتاب میکند تا فراخواننده تعریف اولش را بیصدا از دست ندهد.
محدودیتهای سازگاری
Compliance gates
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.
نمونه
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.
همچنین ببینید: پشتیبانی AcroForm, THPDFActionScriptType
See also: AcroForm Support, THPDFActionScriptType
|