PDFium Component Docs

CharacterIndexAtPos methode

Component: TPdf  ·  Unit: PDFium
Haalt de index op van een teken op of in de buurt van een bepaalde positie op de pagina. Als er geen teken op of in de buurt van het punt is, is de teruggegeven waarde -1. Als er een fout optreedt, wordt -3 teruggegeven

Syntax

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

Return Value

De op 0 gebaseerde index van het dichtstbijzijnde teken, -1 als er geen teken binnen de opgegeven tolerantieregio valt, of -3 als er een interne fout optreedt (bijvoorbeeld als er geen pagina is geladen).

Description

CharacterIndexAtPos koppelt een punt in PDF-gebruikersruimtecoördinaten aan de index van het dichtstbijzijnde teken op de huidige pagina. Het is de inverse bewerking van het lezen van Character[Index] of RectangleCount: gegeven een positie (zoals een muisklik vertaald naar paginacoördinaten) identificeert het welk teken de gebruiker aanwees.

De parameters X en Y specificeren het querypunt in PDF-gebruikersruimte-eenheden. De oorsprong bevindt zich in de linkerbenedenhoek van de pagina, waarbij Y naar boven toeneemt. De parameters ToleranceX en ToleranceY breiden een rechthoekig zoekgebied rond het querypunt uit; elk teken waarvan het begrenzende vak dat gebied snijdt is een kandidaat.

Als er geen teken binnen de tolerantieregio wordt gevonden, geeft de functie -1 terug. Een teruggegeven waarde van -3 duidt op een fout, doorgaans omdat er momenteel geen pagina open is. Bij succes kan de teruggegeven index direct worden doorgegeven aan RectangleCount, Character, of worden gebruikt als het StartIndex-argument van FindFirst.

Bij het converteren van scherm- (pixel-)coördinaten naar PDF-gebruikersruimtecoördinaten gebruikt u de paginabreedte en -hoogte samen met het huidige zoomniveau om op de juiste manier te schalen.

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