Inspekce grafu akcí a navigace GoToE

THPDFActionBuilder vytváří akce GoToE PDF 1.6 pro cíle uvnitř vložených nebo souvisejících dokumentů PDF, zatímco API načtených akcí čte všech 18 standardních podtypů akcí PDF bez jejich spuštění

Tvůrci 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;

Sestavte každou položku cílové cesty pomocí HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget nebo přetížení HPDFEmbeddedAnnotationTarget

Podřízený prvek vybraný stromem jmen EmbeddedFiles zapisuje /R /C plus /N, zatímco podřízený prvek anotace-přílohy zapisuje /R /C plus požadovanou dvojici /P a /A

Nadřazené položky zapisují pouze /R /P, vnořené položky se stávají rekurzivními slovníky /T a prázdné jméno RootFileName vyžaduje neprázdnou cílovou cestu

Příklad v 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;

Načtený graf akcí

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;

Vrácené pole sleduje pořadí spouštění: nadřazená akce se objeví jako první, následovaná každým prvkem slovníku nebo pole /Next v uspořádané sekvenci do hloubky

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

Základní operandy jsou dekódovány do polí cíle, souboru, URI, JavaScriptu, cíle, operace, příznaku, svazku, volitelné logické hodnoty a souvisejícího objektu

NewWindow používá obAbsent, obFalse nebo obTrue, takže chybějící hodnota zůstává odlišná od explicitní hodnoty false

Čtečka nikdy neprovede akci a nikdy nenásleduje neomezený graf

Neplatné položky, cykly, opakované sdílené uzly, hloubka nad 64, počet uzlů nad 4096 a příliš velká pole /Next vracejí diagnostické záznamy přes Malformed a Issue

Spouštěče viditelnosti anotací

THPDFAnnotationActionTrigger a THPDFAnnotationJavaScriptTrigger zahrnují položky otevření stránky /PO, zavření stránky /PC, viditelnosti stránky /PV a neviditelnosti stránky /PI

Tyto čtyři spouštěče vyjednávají PDF 1.5, zatímco existující spouštěče akcí myši a fokusu zachovávají své dřívější požadavky na verzi

Viz také