Документация PDFiumPas

JavaScriptActions Свойство

Эта запись API сохраняет идентификаторы, сигнатуры, блоки кода и термины PDF в исходном виде.
Компонент: TPdf  ·  Модуль: PDFium
Все действия JavaScript на уровне документа, возвращенные как один динамический массив

Синтаксис

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_*) или передать их внешнему анализатору. Скрипты уровня поля и аннотации находятся в другом месте и не входят в этот массив

Примечания

Пример

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]));

См. также

JavaScriptAction, JavaScriptActionCount, Permissions