Inspecția grafului de acțiuni și navigarea GoToE

THPDFActionBuilder creează acțiuni PDF 1.6 GoToE pentru destinații din interiorul documentelor PDF încorporate sau înrudite, în timp ce API-ul acțiunilor încărcate citește toate cele 18 subtipuri standard de acțiuni PDF fără a le executa

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

Construiți fiecare intrare de cale țintă cu o supraîncărcare HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget sau HPDFEmbeddedAnnotationTarget

Un copil selectat prin arborele de nume EmbeddedFiles scrie /R /C plus /N, în timp ce un copil de adnotare atașament scrie /R /C plus perechea obligatorie /P și /A

Intrările părinte scriu doar /R /P, intrările imbricate devin dicționare recursive /T, iar un RootFileName gol necesită o cale țintă ne goală

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

Graf de acțiuni încărcat

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;

Tabloul returnat urmează ordinea de execuție: acțiunea părinte apare prima, urmată de fiecare dicționar /Next sau membru de tablou în secvență ordonată adâncime-întâi

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

Operanzii de bază sunt decodificați în câmpuri de destinație, fișier, URI, JavaScript, țintă, operație, fanion, volum, valoare booleană opțională și obiecte înrudite

NewWindow folosește obAbsent, obFalse sau obTrue astfel încât o valoare lipsă rămâne distinctă de o valoare falsă explicită

Cititorul nu execută niciodată o acțiune și nu urmărește niciodată un graf nemărginit

Intrările malformate, ciclurile, nodurile partajate repetate, adâncimea peste 64, numărul de noduri peste 4096 și tablourile /Next prea mari returnează înregistrări de diagnostic prin Malformed și Issue

Declanșatoare de vizibilitate a adnotărilor

THPDFAnnotationActionTrigger și THPDFAnnotationJavaScriptTrigger includ intrări de deschidere-pagină /PO, închidere-pagină /PC, pagină-vizibilă /PV și pagină-invizibilă /PI

Aceste patru declanșatoare negociază PDF 1.5, în timp ce declanșatoarele existente de acțiuni de maus și focalizare își păstrează cerințele de versiune anterioare

Vezi și