Inspektion av åtgärdsgrafen och GoToE-navigation

THPDFActionBuilder skapar PDF 1.6 GoToE-åtgärder för destinationer inuti inbäddade eller relaterade PDF-dokument, medan det inlästa-åtgärds-API:et läser alla 18 standardiserade PDF-åtgärdsundertyper utan att köra dem

GoToE-byggare

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;

Bygg varje post i målsökvägen med HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget eller en HPDFEmbeddedAnnotationTarget-överlagring

ett barn som valts via EmbeddedFiles-namnträdet skriver /R /C plus /N, medan ett bilage-anteckningsbarn skriver /R /C plus det obligatoriska /P- och /A-paret

Överordnade poster skriver endast /R /P, nästlade poster blir rekursiva /T-ordböcker, och ett tomt RootFileName kräver en icke-tom målsökväg

Delphi-exempel

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;

Inläst åtgärdsgraf

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;

Den returnerade arrayen följer körningsordningen: överordnad åtgärd visas först, följt av varje /Next-ordboks- eller arraymedlem i ordnad djupet-först-ordning

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

Kärn-operander avkodas till destinations-, fil-, URI-, JavaScript-, mål-, operations-, flagg-, volym-, valfritt-boolean- och relaterat-objektfält

NewWindow använder obAbsent, obFalse eller obTrue så att ett saknat värde förblir skilt från ett uttryckligt falskt värde

Läsaren kör aldrig en åtgärd och följer aldrig en obegränsad graf

Felutformade poster, cykler, upprepade delade noder, djup över 64, nodantal över 4096 och överdimensionerade /Next-arrayer returnerar diagnostiska poster via Malformed och Issue

Utlösare för anteckningssynlighet

THPDFAnnotationActionTrigger och THPDFAnnotationJavaScriptTrigger omfattar sida-öppen /PO, sida-stängd /PC, sida-synlig /PV och sida-osynlig /PI-poster

Dessa fyra utlösare förhandlar PDF 1.5, medan de befintliga mus- och fokusåtgärdsutlösarna behåller sina tidigare versionskrav

Se även