Inspekcja grafu akcji i nawigacja GoToE
THPDFActionBuilder tworzy akcje GoToE PDF 1.6 dla celów wewnątrz osadzonych lub powiązanych dokumentów PDF, podczas gdy API załadowanych akcji odczytuje wszystkie 18 standardowych podtypów akcji PDF bez ich wykonywania
Konstruktory 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;
Buduj każdy wpis ścieżki docelowej przez HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget lub przeciążenie HPDFEmbeddedAnnotationTarget
Element podrzędny wybrany przez drzewo nazw EmbeddedFiles zapisuje /R /C plus /N, podczas gdy element podrzędny adnotacji-załącznika zapisuje /R /C plus wymaganą parę /P i /A
Wpisy nadrzędne zapisują tylko /R /P, wpisy zagnieżdżone stają się rekurencyjnymi słownikami /T, a pusta nazwa RootFileName wymaga niepustej ścieżki docelowej
Przykład w 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;
Załadowany graf akcji
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;
Zwrócona tablica zachowuje kolejność wykonywania: akcja nadrzędna pojawia się pierwsza, po niej następuje każdy element słownika lub tablicy /Next w uporządkowanej sekwencji najpierw-w-głąb
THPDFLoadedActionInfo.Kind identyfikuje GoTo, GoToR, GoToE, Launch, Thread, URI, Sound, Movie, Hide, Named, SubmitForm, ResetForm, ImportData, JavaScript, SetOCGState, Rendition, Trans lub GoTo3DView
Podstawowe operandy są dekodowane do pól celu, pliku, URI, JavaScript, celu, operacji, flagi, wolumenu, opcjonalnej wartości logicznej i powiązanego obiektu
NewWindow używa obAbsent, obFalse lub obTrue, więc brakująca wartość pozostaje różna od wyraźnej wartości false
Czytnik nigdy nie wykonuje akcji i nigdy nie podąża za nieograniczonym grafem
Wadliwe wpisy, cykle, powtórzone współdzielone węzły, głębokość powyżej 64, liczba węzłów powyżej 4096 oraz zbyt duże tablice /Next zwracają rekordy diagnostyczne przez Malformed i Issue
Wyzwalacze widoczności adnotacji
THPDFAnnotationActionTrigger i THPDFAnnotationJavaScriptTrigger zawierają wpisy otwarcia strony /PO, zamknięcia strony /PC, widoczności strony /PV i niewidoczności strony /PI
Te cztery wyzwalacze negocjują PDF 1.5, podczas gdy istniejące wyzwalacze akcji myszy i fokusu zachowują swoje wcześniejsze wymagania wersji