PDFium Delphi Component Docs

CharacterIndexAtPos 메서드

컴포넌트: TPdf  ·  유닛: PDFium
페이지의 특정 위치 또는 그 근처에 있는 문자의 인덱스를 가져옵니다. 해당 지점 또는 근처에 문자가 없으면 반환값은 -1이고, 오류가 발생하면 -3이 반환됩니다

Syntax

function CharacterIndexAtPos(X, Y, ToleranceX, ToleranceY: Double): Integer;

Return Value

가장 가까운 문자의 0 기반 인덱스이며, 지정한 허용 오차 영역 안에 문자가 없으면 -1, 내부 오류가 발생하면(예: 페이지가 로드되지 않음) -3을 반환합니다

Description

CharacterIndexAtPos는 PDF 사용자 공간 좌표의 한 점을 현재 페이지에서 가장 가까운 문자의 인덱스로 매핑합니다. Character[Index]나 RectangleCount를 읽는 것의 역연산으로, 위치(예: 페이지 좌표로 변환한 마우스 클릭)가 주어지면 사용자가 가리킨 문자를 식별합니다

X와 Y 매개변수는 PDF 사용자 공간 단위로 질의 지점을 지정합니다. 원점은 페이지의 왼쪽 아래 모서리이며 Y는 위로 증가합니다. ToleranceX와 ToleranceY 매개변수는 질의 지점 주변에 직사각형 검색 영역을 확장하며, 경계 상자가 그 영역과 교차하는 모든 문자가 후보가 됩니다

허용 오차 영역 안에서 문자를 찾지 못하면 함수는 -1을 반환합니다. -3 반환값은 오류를 나타내며, 보통 현재 열린 페이지가 없기 때문입니다. 성공하면 반환된 인덱스를 RectangleCount, Character에 직접 전달하거나 FindFirst의 StartIndex 인수로 사용할 수 있습니다

화면(픽셀) 좌표를 PDF 사용자 공간 좌표로 변환할 때는 페이지 너비와 높이를 현재 확대 수준과 함께 사용하여 적절히 스케일링합니다

Example

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;

See Also

CharacterCount, Character, FindFirst, RectangleCount