Inspecçã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 incorporados ou relacionados, enquanto a API de ações carregadas lê todos os 18 subtipos de ação padrão de PDF sem os executar
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 através da árvore de nomes EmbeddedFiles escreve /R /C mais /N, enquanto um filho de anotação de anexo escreve /R /C mais o par /P e /A exigido
As entradas-pai escrevem 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;
A matriz devolvida segue a ordem de execução: a ação-pai aparece primeiro, seguida de cada membro de dicionário ou matriz /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 descodificados em campos de destino, ficheiro, 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 partilhados repetidos, profundidade acima de 64, contagem de nós acima de 4096 e matrizes /Next sobredimensionadas devolvem registos de diagnóstico através 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
Estes quatro gatilhos negociam PDF 1.5, enquanto os gatilhos de ação de rato e foco existentes mantêm os seus requisitos de versão anteriores