Ispezione del grafo delle azioni e navigazione GoToE

THPDFActionBuilder crea azioni GoToE di PDF 1.6 per destinazioni all'interno di documenti PDF incorporati o correlati, mentre l'API delle azioni caricate legge tutti i 18 sottotipi di azione PDF standard senza eseguirli

Costruttori 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;

Costruire ogni voce del percorso di destinazione con HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget o un overload di HPDFEmbeddedAnnotationTarget

Un figlio selezionato tramite l'albero dei nomi EmbeddedFiles scrive /R /C più /N, mentre un figlio annotazione-allegato scrive /R /C più la coppia /P e /A richiesta

Le voci padre scrivono solo /R /P, le voci nidificate diventano dizionari ricorsivi /T, e un RootFileName vuoto richiede un percorso di destinazione non vuoto

Esempio in 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 delle azioni caricato

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;

L'array restituito segue l'ordine di esecuzione: l'azione padre compare per prima, seguita da ogni membro di dizionario o array /Next in sequenza ordinata in profondità prima

THPDFLoadedActionInfo.Kind identifica GoTo, GoToR, GoToE, Launch, Thread, URI, Sound, Movie, Hide, Named, SubmitForm, ResetForm, ImportData, JavaScript, SetOCGState, Rendition, Trans o GoTo3DView

Gli operandi principali vengono decodificati in campi di destinazione, file, URI, JavaScript, bersaglio, operazione, flag, volume, booleano opzionale e oggetto correlato

NewWindow usa obAbsent, obFalse o obTrue in modo che un valore mancante resti distinto da un valore falso esplicito

Il lettore non esegue mai un'azione e non segue mai un grafo senza limiti

Voci malformate, cicli, nodi condivisi ripetuti, profondità superiore a 64, numero di nodi superiore a 4096 e array /Next sovradimensionati restituiscono record diagnostici tramite Malformed e Issue

Attivatori di visibilità delle annotazioni

THPDFAnnotationActionTrigger e THPDFAnnotationJavaScriptTrigger includono voci pagina-aperta /PO, pagina-chiusa /PC, pagina-visibile /PV e pagina-invisibile /PI

Questi quattro attivatori negoziano PDF 1.5, mentre gli attivatori di azione mouse e focus esistenti mantengono i loro requisiti di versione precedenti

Vedi anche