PDFium Delphi Component Docs

CharacterIndexAtPos Метод

Компонент: TPdf  ·  Модуль: PDFium
Получает индекс символа в указанной или ближайшей позиции на странице. Если в точке или рядом с ней нет символа, возвращается -1. При ошибке возвращается -3

Syntax

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

Return Value

Индекс ближайшего символа с нуля, -1, если ни один символ не попадает в указанную область допуска, или -3, если возникает внутренняя ошибка, например если страница не загружена

Description

CharacterIndexAtPos отображает точку в пользовательских координатах PDF в индекс ближайшего символа на текущей странице. Это операция, обратная чтению Character[Index] или RectangleCount: по позиции (например, клику мыши, пересчитанному в координаты страницы) определяется, на какой символ указал пользователь

Параметры X и Y задают точку запроса в пользовательских единицах PDF. Начало координат — в левом нижнем углу страницы, ось Y направлена вверх. ToleranceX и ToleranceY расширяют прямоугольную область поиска вокруг точки запроса; кандидат — любой символ, чей габаритный бокс пересекает эту область

Если в области допуска символ не найден, функция возвращает -1. Значение -3 сигнализирует об ошибке, обычно из-за того, что страница сейчас не открыта. При успехе возвращённый индекс можно передать прямо в RectangleCount, Character или использовать как аргумент StartIndex у FindFirst

При пересчёте экранных (пиксельных) координат в пользовательские единицы 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