THotPDF.RegisterDocumentJavaScript

THotPDF

 

AcroForm Support

Регистрирует именованную 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