property LinkAnnotationCount[PageNumber: Integer]: Integer; // read only
LinkAnnotationCount возвращает количество записей subtype /Link на
странице, заданной аргументом PageNumber с нумерацией с единицы (раздел
12.5.6.5 спецификации PDF 1.7). В отличие от AnnotationCount, который
ограничен текущей активной страницей и считает все подтипы аннотаций, это индексированное
свойство обращается к любой странице напрямую и фильтрует только link annotations —
записи, которые оборачивают кликабельную область вокруг текста или графики и указывают на
destination, URI, launch action или named action
Передавайте PageNumber в диапазоне 1 .. PageCount. Значение
равно 0, когда Active равно False, когда индекс
страницы недопустим или когда на странице просто нет link annotations. PDFiumPas также
показывает «auto-detected» web URLs отдельно через WebLinkCount
— они приходят из text-pattern scanning и не входят в LinkAnnotationCount
Используйте LinkAnnotation[PageNumber, Index] с индексами от 0
до LinkAnnotationCount[PageNumber] - 1, чтобы получить запись
TLinkAnnotation — bounding rectangle, target page number, action type,
quadrilateral points для multi-line links и resolved action payload. Загрузка link metadata
имеет сложность O(n) на страницу; кэшируйте ее при обходе многих страниц
Index с нуля в
большинстве индексаторов в стиле массиваWebLinkCount, когда реализуете единый overlay
«clickable hotspots» в собственном просмотрщике0, а не вызывают исключение
— это безопасно использовать внутри threaded probes без try/except
var P, I: Integer;
var Link: TLinkAnnotation;
for P := 1 to Pdf1.PageCount do
for I := 0 to Pdf1.LinkAnnotationCount[P] - 1 do
begin
Link := Pdf1.LinkAnnotation[P, I];
Memo1.Lines.Add(Format('p%d link → page %d', [P, Link.PageNumber]));
end;