property AnnotationCount: Integer; // read only
AnnotationCount возвращает длину массива /Annots текущей страницы
(раздел 12.5 спецификации PDF 1.7). Учитываются все подтипы аннотаций — текстовые
заметки, выделения, подчёркивания, свободный текст, рукописные пометки, штампы,
многоугольники и ломаные, аннотации ссылок, всплывающие окна и аннотации виджетов форм.
Сложите значения со всех страниц, чтобы получить общее количество аннотаций в документе
Свойство требует, чтобы Active было равно True, и читает
данные со страницы, указанной в PageNumber. Когда на странице нет аннотаций
или документ не загружен, значение равно 0. Используйте Annotation[Index]
с индексами от 0 до AnnotationCount - 1, чтобы получить запись
TPdfAnnotation, описывающую подтип, ограничивающий прямоугольник, цвет,
битовую маску флагов и текст содержимого каждой записи
Перебор аннотаций имеет сложность O(n), но каждый вызов Annotation[Index]
открывает новый дескриптор PDFium и декодирует содержимое Unicode по требованию; кэшируйте
результат, если он нужен несколько раз. Изменение аннотаций страницы, например вставки или
удаления, делает индексы недействительными — перезапустите цикл или перечитайте
AnnotationCount после изменения
FormFieldCount, если нужны только виджеты полейLinkAnnotationCount[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;