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

Ver também