property AnnotationCount: Integer; // read only
AnnotationCount возвращает длину массива /Annots текущей страницы (раздел 12.5 спецификации PDF 1.7). Учитываются все подтипы аннотаций — текстовые заметки, выделение, подчеркивание, free-text, чернила, штампы, полигоны и полилинии, link-аннотации, всплывающие диалоги и widget-аннотации форм. Сложите значения по всем страницам, чтобы получить общее число аннотаций в документе
Свойству требуется Active = True, а читает оно страницу, на которую указывает PageNumber. Если на странице нет аннотаций или документ не загружен, значение равно 0. Через Annotation[Index] с индексами от 0 до AnnotationCount - 1 достаётся запись TPdfAnnotation с подтипом, габаритным прямоугольником, цветом, битовой маской флагов и текстом содержимого каждой аннотации
Обход аннотаций стоит O(n), при этом каждый вызов Annotation[Index] открывает новый дескриптор PDFium и декодирует Unicode-содержимое по требованию; если результат нужен несколько раз, закэшируйте его. Изменение аннотаций страницы (вставки, удаления) делает индексы недействительными — после изменения начните цикл заново или перечитайте AnnotationCount
FormFieldCountLinkAnnotationCount[PageNumber] — он фильтрует подтип /Link по любой странице напрямую
var I: Integer;
var A: TPdfAnnotation;
for I := 0 to Pdf1.AnnotationCount - 1 do
begin
A := Pdf1.Annotation[I];
Memo1.Lines.Add(Format('%d: subtype=%d text=%s',
[I, Ord(A.Subtype), A.ContentsText]));
end;