function CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer;
-1 se nessun carattere ricade nell'area di tolleranza specificata, oppure -3 se si verifica un errore interno per esempio se non è caricata alcuna paginaCharacterIndexAtPos mappa un punto nelle coordinate dello spazio utente PDF sull'indice del carattere più vicino nella pagina corrente. È l'operazione inversa della lettura di Character[Index] o RectangleCount: data una posizione (come un clic del mouse convertito in coordinate di pagina), identifica a quale carattere ha puntato l'utente.
I parametri X e Y specificano il punto di interrogazione in unità dello spazio utente PDF. L'origine è nell'angolo inferiore sinistro della pagina, con Y crescente verso l'alto. I parametri ToleranceX e ToleranceY estendono una regione di ricerca rettangolare attorno al punto di interrogazione; qualsiasi carattere il cui riquadro di delimitazione interseca quella regione è un candidato.
Se non viene trovato alcun carattere all'interno della regione di tolleranza, la funzione restituisce -1. Un valore di ritorno -3 indica un errore, in genere perché nessuna pagina è attualmente aperta. In caso di successo, l'indice restituito può essere passato direttamente a RectangleCount, Character, oppure usato come argomento StartIndex di FindFirst.
Quando si convertono coordinate dello schermo (in pixel) in coordinate dello spazio utente PDF, usa la larghezza e l'altezza della pagina insieme al livello di zoom corrente per ridimensionare opportunamente.
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;