property JavaScriptActionCount: Integer; // read only
Возвращает число JavaScript действий, объявленных на уровне документа — как правило, записи в дереве имён /Names /JavaScript каталога (раздел 12.6.4.16 спецификации PDF 1.7) плюс document-level OpenAction, DA, WC, WS, DS, WP, DP, когда их словари действий несут поток JS Скрипты уровня полей и аннотаций сюда не входят: они живут в аннотациях или словарях полей AcroForm
Значение равно 0, когда документ не загружен, Active равно False или PDF просто не содержит document-level скриптов. Через JavaScriptAction[Index] достаётся одна запись в виде TPdfJavaScriptAction (Name + Script source), а JavaScriptActions разворачивает весь массив одним вызовом
Чтение свойства дешёвое — PDFium лишь обходит дерево имён и не исполняет ни одного скрипта. PDFium Delphi Component JavaScript не исполняет; возвращённые строки — чистые данные для инспекции, полезные при форензике, удалении скриптов перед распространением или показе пользователю предупреждения “Документ содержит JavaScript”
JavaScriptActionsName допустимы — PDF разрешает безымянные словари действий (например, OpenAction). И не рассчитывайте на уникальность Name
// Warn the user if the PDF carries embedded JavaScript.
if Pdf1.JavaScriptActionCount > 0 then
if MessageDlg('This document contains JavaScript. Open anyway?',
mtWarning, [mbYes, mbNo], 0) = mrNo then
Pdf1.Active := False;