function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;
| AnnotIndex | Integer. Nulbaseret indeks for start-annotationen på den aktuelle side, i intervallet 0 .. AnnotationCount - 1 |
| Relationship | TPdfAnnotationRelationship. parPopup følger /Popup-entryerne; parInReplyTo følger /IRT-svarengrene |
| MaxDepth | Integer. Maksimalt antal lænker, der følges. Skal være mellem 1 og 4096, ellers udløses en EPdfError. Standardværdien er 64 |
| Result | TPdfIntegerArray. Sideindeksene for de forbundne annotationer i besøgsrækkefølge. Tomt, når start-annotationen ikke har en sådan lænke |
Anvender GetLinkedAnnotationIndex gentagne gange: fra start-annotationen følger den den ønskede relation til næste annotation, derefter igen fra den og videre, og samler hvert indeks undervejs. Resultatet er svartråden i en diskussion eller en popup-kæde som et simpelt array af sideannotationsindeks
Gennemløbet standser under tre betingelser: den aktuelle annotation har ikke flere lænker, antallet af besøgte lænker når MaxDepth, eller det næste indeks ville genbesøge en allerede set annotation (startindekset regnes som set). Cyklusvagten gør kaldet sikkert på misdannede dokumenter, hvis /IRT-entries går i loop
Startindekset selv er aldrig en del af resultatet — kun de annotationer, det fører til. En annotation uden den ønskede lænke giver et tomt array, ikke en fejl
MaxDepth uden for 1 .. 4096 udløser en EPdfError, før nogen annotation åbnes
var
Chain: TPdfIntegerArray;
Index: Integer;
begin
// saml hele svartråden under annotation 5
Chain := Pdf1.GetLinkedAnnotationChain(5, parInReplyTo);
for Index in Chain do
Memo1.Lines.Add(Pdf1.Annotation[Index].ContentsText);
end;