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