function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;
| AnnotIndex | Integer. Indeks adnotacji początkowej na bieżącej stronie liczony od zera, w zakresie 0 .. AnnotationCount - 1 |
| Relationship | TPdfAnnotationRelationship. parPopup podąża za wpisami /Popup; parInReplyTo podąża za wpisami odpowiedzi /IRT |
| MaxDepth | Integer. Maksymalna liczba łączy do przejścia. Musi mieścić się między 1 a 4096, w przeciwnym razie zgłaszany jest EPdfError. Domyślnie 64 |
| Result | TPdfIntegerArray. Indeksy stron połączonych adnotacji w kolejności odwiedzania. Pusty, gdy adnotacja początkowa nie ma takiego łącza |
Wielokrotnie stosuje GetLinkedAnnotationIndex: od adnotacji początkowej podąża żądaną relacją do następnej adnotacji, potem znowu od tej, zbierając po drodze każdy indeks. Wynikiem jest wątek odpowiedzi dyskusji albo łańcuch popupów, jako prosta tablica indeksów adnotacji strony
Przejście zatrzymuje się z trzech powodów: bieżąca adnotacja nie ma dalszego łącza, liczba odwiedzonych łączy osiąga MaxDepth albo następny indeks wskazywałby adnotację już odwiedzoną (indeks początkowy liczy się jako odwiedzony). Zabezpieczenie przed cyklami czyni wywołanie bezpiecznym na uszkodzonych dokumentach, których wpisy /IRT zapętlają się
Indeks początkowy sam nigdy nie jest częścią wyniku — tylko adnotacje, do których prowadzi. Adnotacja bez żądanego łącza daje pustą tablicę, a nie błąd
MaxDepth poza zakresem 1 .. 4096 zgłasza EPdfError, zanim jakakolwiek adnotacja zostanie otwarta
var
Chain: TPdfIntegerArray;
Index: Integer;
begin
// collect the whole reply thread under annotation 5
Chain := Pdf1.GetLinkedAnnotationChain(5, parInReplyTo);
for Index in Chain do
Memo1.Lines.Add(Pdf1.Annotation[Index].ContentsText);
end;