Inspection du graphe d'actions et navigation GoToE

THPDFActionBuilder crée des actions PDF 1.6 GoToE pour des destinations dans des documents PDF embarqués ou liés, tandis que l'API des actions chargées lit les 18 sous-types d'actions PDF standard sans les exécuter

Constructeurs 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;

Construisez chaque entrée de chemin cible avec HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget ou une surcharge HPDFEmbeddedAnnotationTarget

Un enfant sélectionné via l'arbre de noms EmbeddedFiles écrit /R /C plus /N, tandis qu'un enfant annotation-attachement écrit /R /C plus la paire /P et /A requise

Les entrées parentes écrivent seulement /R /P, les entrées imbriquées deviennent des dictionnaires /T récursifs, et un RootFileName vide nécessite un chemin cible non vide

Exemple 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;

Graphe d'actions chargé

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;

Le tableau renvoyé suit l'ordre d'exécution : l'action parente apparaît en premier, suivie de chaque membre de dictionnaire ou tableau /Next en séquence ordonnée en profondeur d'abord

THPDFLoadedActionInfo.Kind identifie GoTo, GoToR, GoToE, Launch, Thread, URI, Sound, Movie, Hide, Named, SubmitForm, ResetForm, ImportData, JavaScript, SetOCGState, Rendition, Trans ou GoTo3DView

Les opérandes principaux sont décodés en champs de destination, fichier, URI, JavaScript, cible, opération, drapeau, volume, booléen-optionnel et objet-lié

NewWindow utilise obAbsent, obFalse ou obTrue afin qu'une valeur manquante reste distincte d'une valeur faux explicite

Le lecteur n'exécute jamais une action et ne suit jamais un graphe non borné

Les entrées mal formées, cycles, nœuds partagés répétés, profondeur supérieure à 64, nombre de nœuds supérieur à 4096 et tableaux /Next surdimensionnés renvoient des enregistrements de diagnostic via Malformed et Issue

Déclencheurs de visibilité d'annotation

THPDFAnnotationActionTrigger et THPDFAnnotationJavaScriptTrigger incluent les entrées page-ouverte /PO, page-fermée /PC, page-visible /PV et page-invisible /PI

Ces quatre déclencheurs négocient PDF 1.5, tandis que les déclencheurs d'actions souris et focus existants conservent leurs exigences de version antérieures

Voir aussi