動作圖檢查與 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 項目

這四個觸發器協商 PDF 1.5,而現有的滑鼠和焦點動作觸發器保留其更早的版本要求

參見