PDFium Component Docs

CharacterIndexAtPos Metoda

Component: TPdf  ·  Unit: PDFium
Zwraca indeks znaku znajdującego się w określonym punkcie strony lub w jego pobliżu Jeśli przy tym punkcie ani w jego pobliżu nie ma znaku, wynik będzie równy -1 W razie błędu zwracane jest -3

Syntax

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

Return Value

Indeks liczony od zera najbliższego znaku, -1, gdy żaden znak nie mieści się we wskazanym regionie tolerancji, lub -3, gdy wystąpi błąd wewnętrzny (na przykład gdy żadna strona nie jest wczytana)

Description

CharacterIndexAtPos mapuje punkt we współrzędnych przestrzeni użytkownika PDF na indeks najbliższego znaku na bieżącej stronie. To operacja odwrotna do odczytu Character[Index] lub RectangleCount: mając położenie (na przykład kliknięcie myszą przełożone na współrzędne strony), identyfikuje, na który znak wskazał użytkownik

Parametry X i Y określają punkt zapytania w jednostkach przestrzeni użytkownika PDF. Początek układu znajduje się w lewym dolnym rogu strony, a Y rośnie w górę. Parametry ToleranceX i ToleranceY rozszerzają prostokątny region poszukiwań wokół punktu zapytania; kandydatem jest każdy znak, którego prostokąt otaczający przecina ten region

Jeśli w regionie tolerancji nie zostanie znaleziony żaden znak, funkcja zwraca -1. Wartość zwracana -3 wskazuje błąd, zwykle dlatego, że żadna strona nie jest aktualnie otwarta. Po sukcesie zwrócony indeks można przekazać bezpośrednio do RectangleCount, Character lub użyć jako argumentu StartIndex w FindFirst

Podczas konwertowania współrzędnych ekranowych (pikselowych) na współrzędne przestrzeni użytkownika PDF użyj szerokości i wysokości strony wraz z bieżącym poziomem powiększenia, aby odpowiednio przeskalować

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