动作图检查与 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;

HPDFEmbeddedParentTargetHPDFEmbeddedFileTargetHPDFEmbeddedAnnotationTarget 重载构建每个目标路径条目

通过 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 标识 GoToGoToRGoToELaunchThreadURISoundMovieHideNamedSubmitFormResetFormImportDataJavaScriptSetOCGStateRenditionTransGoTo3DView

核心操作数被解码为目标、文件、URI、JavaScript、目标、操作、标志、卷、可选布尔值和相关对象字段

NewWindow 使用 obAbsentobFalseobTrue,因此缺失值仍区别于显式 false 值

读取器从不执行动作,也从不跟随无界图

畸形条目、循环、重复的共享节点、深度超过 64、节点数超过 4096 以及超大 /Next 数组通过 MalformedIssue 返回诊断记录

注释可见性触发器

THPDFAnnotationActionTriggerTHPDFAnnotationJavaScriptTrigger 包含页面打开 /PO、页面关闭 /PC、页面可见 /PV 和页面不可见 /PI 条目

这四个触发器协商 PDF 1.5,而现有的鼠标和焦点动作触发器保留其更早的版本要求

参见