function CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer;
-1 jika tidak ada karakter yang berada dalam wilayah toleransi yang ditentukan, atau -3 jika terjadi error internal (misalnya, jika tidak ada halaman yang dimuat)CharacterIndexAtPos memetakan titik dalam koordinat ruang-pengguna PDF ke indeks karakter terdekat pada halaman saat ini. Ini adalah operasi invers dari pembacaan Character[Index] atau RectangleCount: diberikan posisi (seperti klik mouse yang diterjemahkan ke koordinat halaman), ia mengidentifikasi karakter mana yang ditunjuk pengguna
Parameter X dan Y menentukan titik kueri dalam unit ruang-pengguna PDF. Asal berada di sudut kiri bawah halaman, dengan Y meningkat ke atas. Parameter ToleranceX dan ToleranceY memperluas wilayah pencarian persegi panjang di sekitar titik kueri; karakter apa pun yang persegi pembatasnya berpotongan dengan wilayah itu adalah kandidat
Jika tidak ada karakter yang ditemukan dalam wilayah toleransi, fungsi mengembalikan -1. Nilai kembalian -3 menunjukkan error, biasanya karena tidak ada halaman yang sedang terbuka. Setelah berhasil, indeks yang dikembalikan dapat diteruskan langsung ke RectangleCount, Character, atau dipakai sebagai argumen StartIndex dari FindFirst
Saat mengonversi koordinat layar (piksel) ke koordinat ruang-pengguna PDF, gunakan lebar dan tinggi halaman bersama dengan level zoom saat ini untuk menskalakan dengan tepat
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;