PDFium Delphi Component Docs

метод CharacterIndexAtPos

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

Синтаксис

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

Върната стойност

The 0-based index of the nearest character, -1 if no character falls within the specified tolerance region, or -3 ако възникне вътрешна грешка (например ако няма заредена страница)

Описание

CharacterIndexAtPos съпоставя точка в PDF user-space координати с индекса на най-близкия символ на текущата страница. Това е обратната операция на четенето на Character[Index] или RectangleCount: при дадена позиция (като клик с мишката, преведен в координати на страницата), тя идентифицира кой символ потребителят е посочил.

Параметрите X и Y указват точката на запитване в PDF user-space единици. Началото е в долния ляв ъгъл на страницата, с Y, нарастващ нагоре. Параметрите ToleranceX и ToleranceY разширяват правоъгълна област за търсене около точката на запитване; всеки символ, чийто ограничаващ правоъгълник пресича тази област, е кандидат.

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

Когато преобразувате екранни (пикселни) координати в PDF user-space координати, използвайте ширината и височината на страницата заедно с текущото ниво на мащабиране, за да мащабирате подходящо.

Пример

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;

Виж също

CharacterCount, Character, FindFirst, RectangleCount