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

Ver também