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에 직접 전달하거나 FindFirst의 StartIndex 인수로 사용할 수 있습니다
화면(픽셀) 좌표를 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;