function GetLinkedAnnotationChain(AnnotIndex: Integer; Relationship: TPdfAnnotationRelationship; MaxDepth: Integer = 64): TPdfIntegerArray;
| AnnotIndex | Integer. 현재 페이지에서 시작 주석의 0 기반 인덱스이며 0 .. AnnotationCount - 1 범위입니다 |
| Relationship | TPdfAnnotationRelationship. parPopup은 /Popup 항목을 따라가고 parInReplyTo는 /IRT 답글 항목을 따라갑니다 |
| MaxDepth | Integer. 따라갈 링크의 최대 개수입니다. 1에서 4096 사이여야 하며 그렇지 않으면 EPdfError가 발생합니다. 기본값은 64입니다 |
| Result | TPdfIntegerArray. 방문 순서대로 정렬된 연결 주석의 페이지 인덱스입니다. 시작 주석에 해당 링크가 없으면 비어 있습니다 |
GetLinkedAnnotationIndex를 반복해서 적용합니다. 시작 주석에서 요청된 관계를 따라 다음 주석으로 이동하고, 그 주석에서 다시 이동하면서 지나가는 모든 인덱스를 수집합니다. 결과는 토론의 답글 스레드나 팝업 체인을 평범한 페이지 주석 인덱스 배열로 표현한 것입니다
순회는 세 조건에서 멈춥니다. 현재 주석에 더 이상 링크가 없거나, 방문한 링크 수가 MaxDepth에 도달하거나, 다음 인덱스가 이미 본 주석을 다시 가리킬 때입니다(시작 인덱스도 본 것으로 칩니다). 이 순환 가드 덕분에 /IRT 항목이 루프를 이루는 깨진 문서에서도 호출이 안전합니다
시작 인덱스 자체는 결과에 절대 포함되지 않습니다. 결과는 시작 인덱스가 이어지는 주석들만 담습니다. 요청된 링크가 없는 주석은 오류가 아니라 빈 배열을 돌려줍니다
1 .. 4096 밖의 MaxDepth는 주석을 열기 전에 EPdfError를 일으킵니다
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;