Inspekce grafu akcí a navigace GoToE
THPDFActionBuilder vytváří akce GoToE PDF 1.6 pro cíle uvnitř vložených nebo souvisejících dokumentů PDF, zatímco API načtených akcí čte všech 18 standardních podtypů akcí PDF bez jejich spuštění
Tvůrci 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;
Sestavte každou položku cílové cesty pomocí HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget nebo přetížení HPDFEmbeddedAnnotationTarget
Podřízený prvek vybraný stromem jmen EmbeddedFiles zapisuje /R /C plus /N, zatímco podřízený prvek anotace-přílohy zapisuje /R /C plus požadovanou dvojici /P a /A
Nadřazené položky zapisují pouze /R /P, vnořené položky se stávají rekurzivními slovníky /T a prázdné jméno RootFileName vyžaduje neprázdnou cílovou cestu
Příklad v 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;
Načtený graf akcí
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;
Vrácené pole sleduje pořadí spouštění: nadřazená akce se objeví jako první, následovaná každým prvkem slovníku nebo pole /Next v uspořádané sekvenci do hloubky
THPDFLoadedActionInfo.Kind identifikuje GoTo, GoToR, GoToE, Launch, Thread, URI, Sound, Movie, Hide, Named, SubmitForm, ResetForm, ImportData, JavaScript, SetOCGState, Rendition, Trans nebo GoTo3DView
Základní operandy jsou dekódovány do polí cíle, souboru, URI, JavaScriptu, cíle, operace, příznaku, svazku, volitelné logické hodnoty a souvisejícího objektu
NewWindow používá obAbsent, obFalse nebo obTrue, takže chybějící hodnota zůstává odlišná od explicitní hodnoty false
Čtečka nikdy neprovede akci a nikdy nenásleduje neomezený graf
Neplatné položky, cykly, opakované sdílené uzly, hloubka nad 64, počet uzlů nad 4096 a příliš velká pole /Next vracejí diagnostické záznamy přes Malformed a Issue
Spouštěče viditelnosti anotací
THPDFAnnotationActionTrigger a THPDFAnnotationJavaScriptTrigger zahrnují položky otevření stránky /PO, zavření stránky /PC, viditelnosti stránky /PV a neviditelnosti stránky /PI
Tyto čtyři spouštěče vyjednávají PDF 1.5, zatímco existující spouštěče akcí myši a fokusu zachovávají své dřívější požadavky na verzi