property JavaScriptActions: TPdfJavaScriptActions; // read only
JavaScriptActions материализует каждое действие JavaScript на уровне документа в один
динамический массив записей TPdfJavaScriptAction. Каждая запись содержит
имя действия (обычно ключ записи в дереве имен каталога /Names /JavaScript,
например OpenAction, App.calc) и исходный код скрипта,
декодированный как WString. Длина массива равна JavaScriptActionCount
Результат пуст, когда Active равно False или когда PDF не
содержит скриптов на уровне документа. JavaScriptActions удобнее, чем обход
JavaScriptAction[Index], когда нужны все записи — одна аллокация,
один разбор, готово для группировки или фильтрации. Для очень больших коллекций скриптов
предпочтительнее индексированный доступ, чтобы не материализовать каждое тело скрипта сразу
PDFiumPas показывает скрипты только как данные для просмотра — он их не выполняет,
не изолирует в sandbox и не преобразует. Используйте массив, чтобы показать предупреждение
«contains JavaScript», удалить скрипты перед распространением (в сочетании с
низкоуровневым проходом изменения FPDFDoc_*) или передать их внешнему
анализатору. Скрипты уровня поля и аннотации находятся в другом месте и не входят в этот
массив
OpenAction)Length(Result) = 0 как быстрый check «no JS»
без отдельного вычисления счетчика
var Scripts: TPdfJavaScriptActions;
var I: Integer;
Scripts := Pdf1.JavaScriptActions;
for I := 0 to High(Scripts) do
Memo1.Lines.Add(Format('[%s] %s',
[Scripts[I].Name, Scripts[I].Script]));