Inspekcja grafu akcji i nawigacja GoToE

THPDFActionBuilder tworzy akcje GoToE PDF 1.6 dla celów wewnątrz osadzonych lub powiązanych dokumentów PDF, podczas gdy API załadowanych akcji odczytuje wszystkie 18 standardowych podtypów akcji PDF bez ich wykonywania

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

Buduj każdy wpis ścieżki docelowej przez HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget lub przeciążenie HPDFEmbeddedAnnotationTarget

Element podrzędny wybrany przez drzewo nazw EmbeddedFiles zapisuje /R /C plus /N, podczas gdy element podrzędny adnotacji-załącznika zapisuje /R /C plus wymaganą parę /P i /A

Wpisy nadrzędne zapisują tylko /R /P, wpisy zagnieżdżone stają się rekurencyjnymi słownikami /T, a pusta nazwa RootFileName wymaga niepustej ścieżki docelowej

Przykład w 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;

Załadowany graf akcji

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;

Zwrócona tablica zachowuje kolejność wykonywania: akcja nadrzędna pojawia się pierwsza, po niej następuje każdy element słownika lub tablicy /Next w uporządkowanej sekwencji najpierw-w-głąb

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

Podstawowe operandy są dekodowane do pól celu, pliku, URI, JavaScript, celu, operacji, flagi, wolumenu, opcjonalnej wartości logicznej i powiązanego obiektu

NewWindow używa obAbsent, obFalse lub obTrue, więc brakująca wartość pozostaje różna od wyraźnej wartości false

Czytnik nigdy nie wykonuje akcji i nigdy nie podąża za nieograniczonym grafem

Wadliwe wpisy, cykle, powtórzone współdzielone węzły, głębokość powyżej 64, liczba węzłów powyżej 4096 oraz zbyt duże tablice /Next zwracają rekordy diagnostyczne przez Malformed i Issue

Wyzwalacze widoczności adnotacji

THPDFAnnotationActionTrigger i THPDFAnnotationJavaScriptTrigger zawierają wpisy otwarcia strony /PO, zamknięcia strony /PC, widoczności strony /PV i niewidoczności strony /PI

Te cztery wyzwalacze negocjują PDF 1.5, podczas gdy istniejące wyzwalacze akcji myszy i fokusu zachowują swoje wcześniejsze wymagania wersji

Zobacz też