アクショングラフ検査と GoToE ナビゲーション

THPDFActionBuilder は埋め込みまたは関連 PDF 文書内の宛先に対して PDF 1.6 GoToE アクションを作成し、読み込み済みアクション API は実行せずにすべて 18 の標準 PDF アクションサブタイプを読み取ります

GoToE ビルダー

class function GoToEmbeddedNamedDestination(
  const RootFileName, DestinationName: AnsiString;
  const TargetPath: array of THPDFEmbeddedTarget;
  NewWindow: boolean = false): THPDFActionBuilder;

class function GoToEmbeddedPage(
  const RootFileName: AnsiString;
  TargetPageIndex: Integer;
  const TargetPath: array of THPDFEmbeddedTarget;
  FitMode: THPDFDestinationFitMode = dfmFit;
  Left: Single = 0; Top: Single = 0;
  Right: Single = 0; Bottom: Single = 0;
  Zoom: Single = 0; NewWindow: boolean = false): THPDFActionBuilder;

各ターゲットパス項目を HPDFEmbeddedParentTarget、HPDFEmbeddedFileTarget または HPDFEmbeddedAnnotationTarget オーバーロードで構築します

EmbeddedFiles 名前ツリーから選択された子は /R /C と /N を書き込み、添付注釈の子は /R /C と必須の /P および /A ペアを書き込みます

親項目は /R /P のみを書き込み、ネストされた項目は再帰的な /T 辞書になり、空の RootFileName は空でないターゲットパスを要求します

Delphi の例

var
  Action: THPDFActionBuilder;
  Targets: THPDFEmbeddedTargetArray;
begin
  SetLength(Targets, 2);
  Targets[0] := HPDFEmbeddedFileTarget('chapter.pdf');
  Targets[1] := HPDFEmbeddedParentTarget;
  Action := THPDFActionBuilder.GoToEmbeddedNamedDestination(
    'containers\root.pdf', 'EmbeddedStart', Targets, True);
  try
    HotPDF.CurrentPage.SetAnnotationAction(Annot, Action);
  finally
    Action.Free;
  end;
end;

読み込み済みアクショングラフ

function GetLoadedActionChain(ActionObject: THPDFObject): THPDFLoadedActionInfoArray;
function GetLoadedOpenActionChain: THPDFLoadedActionInfoArray;
function GetLoadedDocumentActionChain(ActionType: THPDFActionScriptType): THPDFLoadedActionInfoArray;
function GetLoadedPageActionChain(PageIndex: Integer; Trigger: THPDFPageActionTrigger): THPDFLoadedActionInfoArray;
function GetLoadedAnnotationPrimaryActionChain(PageIndex, AnnotationIndex: Integer): THPDFLoadedActionInfoArray;
function GetLoadedAnnotationActionChain(PageIndex, AnnotationIndex: Integer; Trigger: THPDFAnnotationActionTrigger): THPDFLoadedActionInfoArray;
function GetLoadedFormFieldActionChain(FieldIndex: Integer; Trigger: THPDFFormFieldActionTrigger): THPDFLoadedActionInfoArray;
function GetLoadedOutlineActionChain(OutlineIndex: Integer): THPDFLoadedActionInfoArray;

返される配列は実行順序に従います:親アクションが最初で、続いて順序付けられた深さ優先順序の各 /Next 辞書または配列メンバが続きます

THPDFLoadedActionInfo.Kind は GoTo、GoToR、GoToE、Launch、Thread、URI、Sound、Movie、Hide、Named、SubmitForm、ResetForm、ImportData、JavaScript、SetOCGState、Rendition、Trans または GoTo3DView を識別します

コアオペランドは宛先、ファイル、URI、JavaScript、ターゲット、操作、フラグ、ボリューム、任意ブール値、および関連オブジェクトフィールドにデコードされます

NewWindow は obAbsent、obFalse または obTrue を使用するため、欠落値は明示的な false 値と区別されたままです

リーダーはアクションを実行せず、非有界グラフをたどりません

不正なエントリ、サイクル、繰り返し共有ノード、64 を超える深さ、4096 を超えるノード数、および超過サイズの /Next 配列は Malformed と Issue を通じて診断レコードを返します

注釈可視性トリガー

THPDFAnnotationActionTrigger と THPDFAnnotationJavaScriptTrigger にはページオープン /PO、ページクローズ /PC、ページ可視 /PV、ページ不可視 /PI エントリが含まれます

これら 4 つのトリガーは PDF 1.5 をネゴシエートし、既存のマウスとフォーカスアクショントリガーは以前のバージョン要件を保持します

関連項目