Aktionsgraph-Inspektion und GoToE-Navigation

THPDFActionBuilder erzeugt PDF-1.6-GoToE-Aktionen für Ziele in eingebetteten oder verwandten PDF-Dokumenten, während die API für geladene Aktionen alle 18 Standard-PDF-Aktions-Subtypen liest, ohne sie auszuführen

GoToE-Builders

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;

Erstellen Sie jeden Zielpfad-Eintrag mit HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget oder einer HPDFEmbeddedAnnotationTarget-Überladung

Ein über den EmbeddedFiles-Namensbaum ausgewähltes Kind schreibt /R /C plus /N, während ein Anhangsanmerkungs-Kind /R /C plus das erforderliche /P- und /A-Paar schreibt

Eltern-Einträge schreiben nur /R /P, verschachtelte Einträge werden rekursive /T-Wörterbücher, und ein leerer RootFileName erfordert einen nicht-leeren Zielpfad

Delphi-Beispiel

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;

Geladener Aktionsgraph

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;

Das zurückgegebene Array folgt der Ausführungsreihenfolge: die Eltern-Aktion erscheint zuerst, gefolgt von jedem /Next-Wörterbuch- oder Array-Mitglied in geordneter Tiefe-zuerst-Folge

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

Kern-Operanden werden in Ziel-, Datei-, URI-, JavaScript-, Ziel-, Operations-, Flag-, Volumen-, Optional-Boolean- und verwandte-Objekt-Felder dekodiert

NewWindow verwendet obAbsent, obFalse oder obTrue, sodass ein fehlender Wert von einem expliziten False-Wert verschieden bleibt

Der Reader führt nie eine Aktion aus und folgt nie einem unbegrenzten Graphen

Fehlerhafte Einträge, Zyklen, wiederholte gemeinsame Knoten, Tiefe über 64, Knotenzahl über 4096 und überdimensionierte /Next-Arrays geben Diagnose-Datensätze über Malformed und Issue zurück

Anmerkungs-Sichtbarkeits-Trigger

THPDFAnnotationActionTrigger und THPDFAnnotationJavaScriptTrigger umfassen Seiten-Öffnen-/PO, Seiten-Schließen-/PC, Seiten-Sichtbar-/PV- und Seiten-Unsichtbar-/PI-Einträge

Diese vier Trigger verhandeln PDF 1.5, während die bestehenden Maus- und Fokus-Aktions-Trigger ihre früheren Versionsanforderungen beibehalten

Siehe auch