Inspecția grafului de acțiuni și navigarea GoToE
THPDFActionBuilder creează acțiuni PDF 1.6 GoToE pentru destinații din interiorul documentelor PDF încorporate sau înrudite, în timp ce API-ul acțiunilor încărcate citește toate cele 18 subtipuri standard de acțiuni PDF fără a le executa
Constructori 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;
Construiți fiecare intrare de cale țintă cu o supraîncărcare HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget sau HPDFEmbeddedAnnotationTarget
Un copil selectat prin arborele de nume EmbeddedFiles scrie /R /C plus /N, în timp ce un copil de adnotare atașament scrie /R /C plus perechea obligatorie /P și /A
Intrările părinte scriu doar /R /P, intrările imbricate devin dicționare recursive /T, iar un RootFileName gol necesită o cale țintă ne goală
Exemplu 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;
Graf de acțiuni încărcat
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;
Tabloul returnat urmează ordinea de execuție: acțiunea părinte apare prima, urmată de fiecare dicționar /Next sau membru de tablou în secvență ordonată adâncime-întâi
THPDFLoadedActionInfo.Kind identifică GoTo, GoToR, GoToE, Launch, Thread, URI, Sound, Movie, Hide, Named, SubmitForm, ResetForm, ImportData, JavaScript, SetOCGState, Rendition, Trans sau GoTo3DView
Operanzii de bază sunt decodificați în câmpuri de destinație, fișier, URI, JavaScript, țintă, operație, fanion, volum, valoare booleană opțională și obiecte înrudite
NewWindow folosește obAbsent, obFalse sau obTrue astfel încât o valoare lipsă rămâne distinctă de o valoare falsă explicită
Cititorul nu execută niciodată o acțiune și nu urmărește niciodată un graf nemărginit
Intrările malformate, ciclurile, nodurile partajate repetate, adâncimea peste 64, numărul de noduri peste 4096 și tablourile /Next prea mari returnează înregistrări de diagnostic prin Malformed și Issue
Declanșatoare de vizibilitate a adnotărilor
THPDFAnnotationActionTrigger și THPDFAnnotationJavaScriptTrigger includ intrări de deschidere-pagină /PO, închidere-pagină /PC, pagină-vizibilă /PV și pagină-invizibilă /PI
Aceste patru declanșatoare negociază PDF 1.5, în timp ce declanșatoarele existente de acțiuni de maus și focalizare își păstrează cerințele de versiune anterioare