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