function CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer;
-1 om inget tecken ligger inom det angivna toleransområdet, eller -3 om ett internt fel uppstår (till exempel om ingen sida är inläst)CharacterIndexAtPos mappar en punkt i PDF-användarytelskoordinater till indexet för närmaste tecken på den aktuella sidan. Det är den omvända operationen till att läsa Character[Index] eller RectangleCount: given en position (som ett musklick översatt till sidkoordinater) identifierar den vilket tecken användaren pekade på
Parametrarna X och Y anger frågepunkten i PDF-användarenheter. Origo ligger i sidans nedre vänstra hörn, med Y ökande uppåt. Parametrarna ToleranceX och ToleranceY utökar ett rektangulärt sökområde runt frågepunkten; varje tecken vars begränsningsruta skär det området är en kandidat
Om inget tecken hittas inom toleransområdet returnerar funktionen -1. Returvärdet -3 indikerar ett fel, vanligtvis för att ingen sida är öppen för tillfället. Vid lyckat resultat kan det returnerade indexet skickas direkt till RectangleCount, Character eller användas som argumentet StartIndex till FindFirst
Vid konvertering av skärmkoordinater (pixlar) till PDF-användarytelskoordinater, använd sidans bredd och höjd tillsammans med den aktuella zoomnivån för att skala korrekt
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;