|
Регистрирует именованную 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 возбуждает исключение.
Описание
Каждый вызов добавляет пару (ключ, косвенный словарь) в /Names /JavaScript дерево имён в момент EndDoc. Каждый зарегистрированный Body становится отдельным косвенным << /S /JavaScript /JS (body) >> словарём, готовым к ссылке по имени из любого другого действия или JS-контекста. Удобно для совместного использования библиотеки помощников валидации, форматирования или вычислений между многими виджетами без дублирования исходника в каждом /A действии.
Повторная регистрация того же Name возбуждает исключение, чтобы вызывающий молча не потерял первое определение.
Гейты соответствия
Возбуждает исключение при любом непустом PDFACompliance значении (ISO 19005-1 §6.6.1 / ISO 19005-2 §6.5.1 / ISO 19005-3 §6.5.1 запрещают все JavaScript-действия на всех уровнях PDF/A). Возбуждает исключение при любом непустом 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"); }');
// ... действие /A виджета AcroForm может затем вызвать: ValidateNumber(this.value);
PDF.EndDoc;
Доступность
HotPDF v2.119.14. Возможность PDF 1.3+; HotPDF автоматически поднимает версию документа, если не установлен StrictVersionLock is set.
См. также: Поддержка AcroForm, THPDFActionScriptType
|