Inspección del grafo de acciones y navegación GoToE

THPDFActionBuilder crea acciones GoToE de PDF 1.6 para destinos dentro de documentos PDF embebidos o relacionados, mientras que la API de acciones cargadas lee los 18 subtipos de acciones estándar de PDF sin ejecutarlos

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

Construya cada entrada de la ruta destino con HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget o una sobrecarga de HPDFEmbeddedAnnotationTarget

Un hijo seleccionado a través del árbol de nombres EmbeddedFiles escribe /R /C más /N, mientras que un hijo de anotación de adjunto escribe /R /C más el par /P y /A requerido

Las entradas padre escriben únicamente /R /P, las entradas anidadas se vuelven diccionarios recursivos /T, y un RootFileName vacío exige una ruta destino no vacía

Ejemplo en 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;

Grafo de acciones cargado

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;

El arreglo devuelto sigue el orden de ejecución: la acción padre aparece primero, seguida de cada miembro de diccionario o arreglo /Next en una secuencia ordenada en profundidad primero

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

Los operandos centrales se decodifican en campos de destino, archivo, URI, JavaScript, objetivo, operación, bandera, volumen, booleano opcional y objeto relacionado

NewWindow usa obAbsent, obFalse u obTrue, de modo que un valor ausente se mantenga distinto de un valor falso explícito

El lector nunca ejecuta una acción y nunca sigue un grafo sin límite

Las entradas mal formadas, los ciclos, los nodos compartidos repetidos, la profundidad mayor a 64, la cantidad de nodos mayor a 4096 y los arreglos /Next sobredimensionados devuelven registros de diagnóstico a través de Malformed y Issue

Disparadores de visibilidad de anotación

THPDFAnnotationActionTrigger y THPDFAnnotationJavaScriptTrigger incluyen entradas de página abierta /PO, página cerrada /PC, página visible /PV y página invisible /PI

Estos cuatro disparadores negocian PDF 1.5, mientras que los disparadores de acción de ratón y de foco existentes conservan sus requisitos de versión anteriores

Véase también