function CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer;
-1, wenn kein Zeichen in die angegebene Toleranzregion fällt, oder -3, wenn ein interner Fehler auftritt (zum Beispiel, wenn keine Seite geladen ist)CharacterIndexAtPos ordnet einen Punkt in PDF-Benutzerkoordinaten dem Index des nächstgelegenen Zeichens auf der aktuellen Seite zu. Es handelt sich um die Umkehroperation zum Lesen von Character[Index] oder RectangleCount: Bei gegebener Position (etwa einem in Seitenkoordinaten umgerechneten Mausklick) ermittelt die Funktion, auf welches Zeichen der Benutzer gezeigt hat
Die Parameter X und Y geben den Abfragepunkt in PDF-Benutzereinheiten an. Der Ursprung liegt an der unteren linken Ecke der Seite, wobei Y nach oben zunimmt. Die Parameter ToleranceX und ToleranceY erweitern einen rechteckigen Suchbereich um den Abfragepunkt; jedes Zeichen, dessen Begrenzungsbox diesen Bereich schneidet, ist ein Kandidat
Wird innerhalb des Toleranzbereichs kein Zeichen gefunden, gibt die Funktion -1 zurück. Ein Rückgabewert von -3 weist auf einen Fehler hin, in der Regel weil gerade keine Seite geöffnet ist. Bei Erfolg kann der zurückgegebene Index direkt an RectangleCount oder Character übergeben oder als StartIndex-Argument von FindFirst verwendet werden
Verwenden Sie beim Umrechnen von Bildschirm-(Pixel-)Koordinaten in PDF-Benutzerkoordinaten die Seitenbreite und -höhe zusammen mit der aktuellen Zoomstufe, um entsprechend zu skalieren
var
CharIdx: Integer;
PageX, PageY: Double;
begin
Pdf1.PageIndex := 0;
// PageX/PageY sind bereits in PDF-Benutzereinheiten umgerechnet
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;