function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;
| AnnotIndex | Integer. Índice basado en cero de la anotación de inicio en la página actual, en el rango 0 .. AnnotationCount - 1 |
| Relationship | TPdfAnnotationRelationship. parPopup sigue las entradas /Popup; parInReplyTo sigue las entradas de respuesta /IRT |
| MaxDepth | Integer. Número máximo de enlaces a seguir. Debe estar entre 1 y 4096; de lo contrario se lanza un EPdfError. El valor predeterminado es 64 |
| Result | TPdfIntegerArray. Índices de página de las anotaciones enlazadas en orden de visita. Vacío cuando la anotación de inicio no tiene dicho enlace |
Aplica repetidamente GetLinkedAnnotationIndex: desde la anotación de inicio sigue la relación solicitada hasta la siguiente anotación, y de nuevo desde esa, recopilando cada índice a lo largo del camino. El resultado es el hilo de respuestas de una discusión, o una cadena de popups, como una matriz simple de índices de anotaciones de página
El recorrido se detiene en tres condiciones: la anotación actual no tiene más enlaces, el número de enlaces visitados alcanza MaxDepth, o el siguiente índice volvería a una anotación ya vista (el índice de inicio cuenta como visto). La guarda contra ciclos hace que la llamada sea segura en documentos mal formados cuyas entradas /IRT forman bucles
El índice de inicio mismo nunca forma parte del resultado — solo las anotaciones a las que conduce. Una anotación sin el enlace solicitado produce una matriz vacía, no un error
MaxDepth fuera de 1 .. 4096 lanza un EPdfError antes de abrir cualquier anotación
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;