function CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer;
-1 als er geen teken binnen de opgegeven tolerantieregio valt, of -3 als er een interne fout optreedt (bijvoorbeeld als er geen pagina is geladen).CharacterIndexAtPos koppelt een punt in PDF-gebruikersruimtecoördinaten aan de index van het dichtstbijzijnde teken op de huidige pagina. Het is de inverse bewerking van het lezen van Character[Index] of RectangleCount: gegeven een positie (zoals een muisklik vertaald naar paginacoördinaten) identificeert het welk teken de gebruiker aanwees.
De parameters X en Y specificeren het querypunt in PDF-gebruikersruimte-eenheden. De oorsprong bevindt zich in de linkerbenedenhoek van de pagina, waarbij Y naar boven toeneemt. De parameters ToleranceX en ToleranceY breiden een rechthoekig zoekgebied rond het querypunt uit; elk teken waarvan het begrenzende vak dat gebied snijdt is een kandidaat.
Als er geen teken binnen de tolerantieregio wordt gevonden, geeft de functie -1 terug. Een teruggegeven waarde van -3 duidt op een fout, doorgaans omdat er momenteel geen pagina open is. Bij succes kan de teruggegeven index direct worden doorgegeven aan RectangleCount, Character, of worden gebruikt als het StartIndex-argument van FindFirst.
Bij het converteren van scherm- (pixel-)coördinaten naar PDF-gebruikersruimtecoördinaten gebruikt u de paginabreedte en -hoogte samen met het huidige zoomniveau om op de juiste manier te schalen.
var
CharIdx: Integer;
PageX, PageY: Double;
begin
Pdf1.PageIndex := 0;
// PageX/PageY are already converted to PDF user-space units
PageX := 150.0;
PageY := 400.0;
CharIdx := Pdf1.CharacterIndexAtPos(PageX, PageY, 5.0, 5.0);
if CharIdx >= 0 then
ShowMessage('Character: ' + Pdf1.Character[CharIdx])
else if CharIdx = -1 then
ShowMessage('No character at that position')
else
ShowMessage('Error retrieving character');
end;