function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;
| AnnotIndex | Integer. Nullbasierter Index der Startanmerkung auf der aktuellen Seite im Bereich 0 .. AnnotationCount - 1 |
| Relationship | TPdfAnnotationRelationship. parPopup folgt den /Popup-Einträgen; parInReplyTo folgt den /IRT-Antwort-Einträgen |
| MaxDepth | Integer. Maximale Anzahl der zu verfolgenden Verknüpfungen. Muss zwischen 1 und 4096 liegen, andernfalls wird ein EPdfError ausgelöst. Der Standardwert ist 64 |
| Result | TPdfIntegerArray. Seitenindizes der verknüpften Anmerkungen in Besuchsreihenfolge. Leer, wenn die Startanmerkung keine solche Verknüpfung besitzt |
Wendet GetLinkedAnnotationIndex wiederholt an: Von der Startanmerkung aus folgt er der angeforderten Beziehung zur nächsten Anmerkung, dann erneut von dieser an, wobei jeder Index auf dem Weg eingesammelt wird. Das Ergebnis ist der Antwortfaden einer Diskussion oder eine Popup-Kette als einfaches Array von Seitenanmerkungs-Indizes
Der Durchlauf endet unter drei Bedingungen: Die aktuelle Anmerkung besitzt keine weitere Verknüpfung, die Anzahl der besuchten Verknüpfungen erreicht MaxDepth, oder der nächste Index würde eine bereits besuchte Anmerkung erneut ansprechen (der Startindex gilt als besucht). Der Zyklusschutz macht den Aufruf bei fehlerhaften Dokumenten sicher, deren /IRT-Einträge eine Schleife bilden
Der Startindex selbst ist nie Teil des Ergebnisses — nur die Anmerkungen, zu denen er führt. Eine Anmerkung ohne die angeforderte Verknüpfung liefert ein leeres Array, keinen Fehler
MaxDepth außerhalb von 1 .. 4096 löst einen EPdfError aus, bevor eine Anmerkung geöffnet wird
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;