Inspeção do grafo de ações e navegação GoToE
THPDFActionBuilder cria ações GoToE de PDF 1.6 para destinos dentro de documentos PDF embarcados ou relacionados, enquanto a API de ações carregadas lê todos os 18 subtipos de ação padrão de PDF sem executá-los
Construtores 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;
Construa cada entrada do caminho de destino com HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget ou uma sobrecarga de HPDFEmbeddedAnnotationTarget
Um filho selecionado por meio da árvore de nomes EmbeddedFiles grava /R /C mais /N, enquanto um filho de anotação de anexo grava /R /C mais o par /P e /A exigido
As entradas pai gravam apenas /R /P, as entradas aninhadas tornam-se dicionários recursivos /T, e um RootFileName vazio exige um caminho de destino não vazio
Exemplo em 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 ações carregado
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;
O array devolvido segue a ordem de execução: a ação pai aparece primeiro, seguida de cada membro de dicionário ou array /Next em sequência ordenada em profundidade primeiro
THPDFLoadedActionInfo.Kind identifica GoTo, GoToR, GoToE, Launch, Thread, URI, Sound, Movie, Hide, Named, SubmitForm, ResetForm, ImportData, JavaScript, SetOCGState, Rendition, Trans ou GoTo3DView
Os operandos centrais são decodificados em campos de destino, arquivo, URI, JavaScript, alvo, operação, flag, volume, booleano opcional e objeto relacionado
NewWindow usa obAbsent, obFalse ou obTrue para que um valor ausente permaneça distinto de um valor falso explícito
O leitor nunca executa uma ação e nunca segue um grafo sem limites
Entradas malformadas, ciclos, nós compartilhados repetidos, profundidade acima de 64, contagem de nós acima de 4096 e arrays /Next superdimensionados devolvem registros de diagnóstico por meio de Malformed e Issue
Gatilhos de visibilidade de anotação
THPDFAnnotationActionTrigger e THPDFAnnotationJavaScriptTrigger incluem entradas de página aberta /PO, página fechada /PC, página visível /PV e página invisível /PI
Esses quatro gatilhos negociam PDF 1.5, enquanto os gatilhos de ação de mouse e foco existentes mantêm seus requisitos de versão anteriores