Inspectie van de actiegraaf en GoToE-navigatie
THPDFActionBuilder maakt PDF 1.6 GoToE-acties aan voor bestemmingen binnen ingebedde of gerelateerde PDF-documenten, terwijl de geladen-actie-API alle 18 standaard PDF-actiesubtypes leest zonder ze uit te voeren
GoToE-bouwers
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;
Bouw elk item van het doelpad met HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget of een HPDFEmbeddedAnnotationTarget-overload
Een kind dat via de EmbeddedFiles-naamstructuur wordt geselecteerd schrijft /R /C plus /N, terwijl een bijlage-annotatiekind /R /C plus het vereiste /P- en /A-paar schrijft
Ouderitems schrijven alleen /R /P, geneste items worden recursieve /T-woordenboeken, en een lege RootFileName vereist een niet-leeg doelpad
Delphi-voorbeeld
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;
Geladen actiegraaf
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;
De geretourneerde array volgt de uitvoeringsvolgorde: de ouderactie verschijnt eerst, gevolgd door elk /Next-woordenboek- of arraylid in een geordende diepte-eerst-volgorde
THPDFLoadedActionInfo.Kind identificeert GoTo, GoToR, GoToE, Launch, Thread, URI, Sound, Movie, Hide, Named, SubmitForm, ResetForm, ImportData, JavaScript, SetOCGState, Rendition, Trans of GoTo3DView
Kernoperanden worden gedecodeerd naar bestemmings-, bestands-, URI-, JavaScript-, doel-, bewerkings-, vlag-, volume-, optioneel-boolean- en gerelateerd-objectvelden
NewWindow gebruikt obAbsent, obFalse of obTrue zodat een ontbrekende waarde onderscheiden blijft van een expliciete waarde false
De lezer voert nooit een actie uit en volgt nooit een onbegrensde graaf
Onjuist gevormde items, cycli, herhaalde gedeelde knooppunten, diepte boven 64, knooppuntaantal boven 4096 en te grote /Next-arrays retourneren diagnostische records via Malformed en Issue
Triggers voor annotatiezichtbaarheid
THPDFAnnotationActionTrigger en THPDFAnnotationJavaScriptTrigger bevatten pagina-open /PO, pagina-sluit /PC, pagina-zichtbaar /PV en pagina-onzichtbaar /PI-items
Deze vier triggers onderhandelen PDF 1.5, terwijl de bestaande muis- en focusactietriggers hun eerdere versie-eisen behouden