function LinkZOrderAtPoint(X, Y: Double): Integer;
| X, Y | Double. Point en unités de page PDF, l’origine étant située dans le coin inférieur gauche de la page |
| Result | Integer. Ordre z du lien couvrant le point tel que rapporté par le hit-test natif, ou -1 lorsqu’aucun lien ne le couvre |
Compagnon de LinkAtPoint : au lieu d’une simple réponse oui/non, le hit-test natif (FPDFLink_GetLinkZOrderAtPoint) renvoie l’ordre z du lien trouvé à la coordonnée. Lorsque plusieurs liens se chevauchent, l’ordre z identifie celui sur lequel la visionneuse doit agir à cette position
Le test s’exécute à l’intérieur de PDFium et respecte donc la géométrie quad-point réelle des annotations de lien plutôt que les rectangles englobants exposés par LinkAnnotation — un lien qui suit du texte renvoyé à la ligne est apparié selon sa forme réelle
Un résultat de -1 signifie que le point ne se trouve sur aucun lien. L’appel exige que la page courante soit active. Convertissez d’abord une position de souris en unités de page avec DeviceToPage
var PX, PY: Double;
begin
if Pdf1.DeviceToPage(MouseX, MouseY, 0, 0, W, H, ro0, PX, PY) then
begin
Memo1.Lines.Add('Link z-order: ' + IntToStr(Pdf1.LinkZOrderAtPoint(PX, PY)));
// -1 means the point is not covered by any link
end;
end;