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

THPDFActionBuilder crea acciones PDF 1.6 GoToE para destinos dentro de documentos PDF incrustados o relacionados, mientras que la API de acciones cargadas lee los 18 subtipos de acciones PDF estándar 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 ruta destino con HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget o una sobrecarga 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 solo /R /P, las entradas anidadas se convierten en diccionarios /T recursivos, y un RootFileName vacío requiere una ruta destino no vacía

Ejemplo 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 array devuelto sigue el orden de ejecución: la acción padre aparece primero, seguida de cada miembro de diccionario o array /Next en secuencia ordenada en profundidad

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

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

NewWindow usa obAbsent, obFalse o obTrue para que un valor ausente permanezca distinto de un valor false explícito

El lector nunca ejecuta una acción y nunca sigue un grafo no acotado

Las entradas mal formadas, ciclos, nodos compartidos repetidos, profundidad superior a 64, recuento de nodos superior a 4096 y arrays /Next de tamaño excesivo devuelven registros de diagnóstico a través de Malformed e 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 acciones de ratón y foco existentes conservan sus requisitos de versión anteriores

Véase también