PDFium Component Docs

GetLinkedAnnotationChain Metoda

Component: TPdf  ·  Unit: PDFium
Wielokrotnie przechodzi po relacji /Popup lub /IRT i zwraca indeksy stron każdej połączonej adnotacji po drodze, z ochroną przed cyklami

Syntax

function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;

AnnotIndexInteger. Indeks adnotacji początkowej na bieżącej stronie liczony od zera, w zakresie 0 .. AnnotationCount - 1
RelationshipTPdfAnnotationRelationship. parPopup podąża za wpisami /Popup; parInReplyTo podąża za wpisami odpowiedzi /IRT
MaxDepthInteger. 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
ResultTPdfIntegerArray. Indeksy stron połączonych adnotacji w kolejności odwiedzania. Pusty, gdy adnotacja początkowa nie ma takiego łącza

Description

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

Remarks

Example

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;

See Also

GetLinkedAnnotationIndex, Annotation, AnnotationCount