property JavaScriptActionCount: Integer; // read only
ドキュメントレベルで宣言された JavaScript アクションの数を返します。通常はカタログの /Names /JavaScript name tree の entry(PDF 1.7 仕様 12.6.4.16 節)に、アクション辞書が JS stream を持つドキュメントレベルの OpenAction、DA、WC、WS、DS、WP、DP entry を加えたものです。フィールドレベルや注釈レベルのスクリプトは含みません。それらは注釈や AcroForm フィールド辞書の側にあります
ドキュメントがロードされていないとき、Active が False のとき、PDF がドキュメントレベルのスクリプトを含まないときは 0 です。単一の entry を TPdfJavaScriptAction レコード(Name + スクリプトソース)として取り出すには JavaScriptAction[Index] を、配列全体を 1 回の呼び出しで具体化するには JavaScriptActions を使います
このプロパティの読み取りは安価です。PDFium はスクリプトを一切実行せずに name tree を辿るだけです。PDFium Delphi Component は JavaScript を評価しません。返される文字列は純粋な検査データで、フォレンジック分析、再配布前のスクリプト除去、「このドキュメントには JavaScript が含まれています」警告の出し分けなどに使えます
JavaScriptActions ではなくインデックス付きアクセサーで遅延的に回してくださいName entry も有効です。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;