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