property AnnotationCount: Integer; // read only
AnnotationCount retorna o comprimento do array /Annots
da página atual (especificação PDF 1.7 seção 12.5). Todos os subtipos de anotação são contados — notas
de texto, realces, sublinhados, texto livre, tinta, carimbos, formas poligonais e polilinhas,
anotações de link, diálogos popup e anotações de widget de formulário. Combine os valores de
cada página para obter o total de anotações do documento.
A propriedade requer que Active seja True e lê da
página indicada por PageNumber. Quando a página não tem anotações ou o
documento não está carregado, o valor é 0. Use Annotation[Index]
com índices de 0 a AnnotationCount - 1 para recuperar um
registro TPdfAnnotation descrevendo o subtipo, retângulo delimitador, cor,
máscara de flags e texto de conteúdo de cada entrada.
Iterar anotações é O(n), mas cada chamada Annotation[Index]
abre um novo handle PDFium e decodifica conteúdo Unicode sob demanda; armazene em cache o resultado
se precisar dele várias vezes. Alterar as anotações de uma página (inserções,
exclusões) invalida índices — reinicie o loop ou releia AnnotationCount
após a alteração.
FormFieldCount se você quiser apenas widgets de campo.LinkAnnotationCount[PageNumber],
que filtra para o subtipo /Link em qualquer página diretamente.
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;