PDFium Delphi Component Docs

CharacterIndexAtPos метод

Component: TPdf  ·  Unit: 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