function CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer;
-1 إذا لم يقع أي حرف ضمن منطقة التسامح المحددة، أو -3 إذا حدث خطأ داخلي (مثلًا، إذا لم تُحمَّل أي صفحة).يعيِّن CharacterIndexAtPos نقطة بإحداثيات فضاء مستخدم PDF إلى فهرس أقرب حرف في الصفحة الحالية. إنها العملية العكسية لقراءة Character[Index] أو RectangleCount: عند إعطاء موضع (مثل نقرة فأرة مترجمة إلى إحداثيات صفحة)، يحدد الحرف الذي أشار إليه المستخدم.
يحدد المعاملان X و Y نقطة الاستعلام بوحدات فضاء مستخدم PDF. الأصل عند ركن أسفل يسار الصفحة، مع ازدياد Y لأعلى. يوسِّع المعاملان ToleranceX و ToleranceY منطقة بحث مستطيلة حول نقطة الاستعلام؛ وأي حرف يتقاطع صندوقه المحيط مع تلك المنطقة يكون مرشحًا.
إذا لم يُعثر على حرف ضمن منطقة التسامح تعيد الدالة -1. تشير قيمة إرجاع -3 إلى خطأ، عادةً لأنه لا توجد صفحة مفتوحة حاليًا. عند النجاح يمكن تمرير الفهرس المُعاد مباشرة إلى RectangleCount أو Character، أو استخدامه كمعامل StartIndex لـ FindFirst.
عند تحويل إحداثيات الشاشة (بالبكسل) إلى إحداثيات فضاء مستخدم PDF، استخدم عرض الصفحة وارتفاعها مع مستوى التكبير الحالي للقياس بشكل مناسب.
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;