function CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer;
-1, gdy żaden znak nie mieści się we wskazanym regionie tolerancji, lub -3, gdy wystąpi błąd wewnętrzny (na przykład gdy żadna strona nie jest wczytana)CharacterIndexAtPos mapuje punkt we współrzędnych przestrzeni użytkownika PDF na indeks najbliższego znaku na bieżącej stronie. To operacja odwrotna do odczytu Character[Index] lub RectangleCount: mając położenie (na przykład kliknięcie myszą przełożone na współrzędne strony), identyfikuje, na który znak wskazał użytkownik
Parametry X i Y określają punkt zapytania w jednostkach przestrzeni użytkownika PDF. Początek układu znajduje się w lewym dolnym rogu strony, a Y rośnie w górę. Parametry ToleranceX i ToleranceY rozszerzają prostokątny region poszukiwań wokół punktu zapytania; kandydatem jest każdy znak, którego prostokąt otaczający przecina ten region
Jeśli w regionie tolerancji nie zostanie znaleziony żaden znak, funkcja zwraca -1. Wartość zwracana -3 wskazuje błąd, zwykle dlatego, że żadna strona nie jest aktualnie otwarta. Po sukcesie zwrócony indeks można przekazać bezpośrednio do RectangleCount, Character lub użyć jako argumentu StartIndex w FindFirst
Podczas konwertowania współrzędnych ekranowych (pikselowych) na współrzędne przestrzeni użytkownika PDF użyj szerokości i wysokości strony wraz z bieżącym poziomem powiększenia, aby odpowiednio przeskalować
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;