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