PDFium Delphi Component Docs

CharacterIndexAtPos Méthode

Composant: TPdf  ·  Unit: PDFium
Obtenez l’index d’un caractère à une certaine position sur la page ou à proximité. S’il n’y a aucun caractère à ou près du point, la valeur de retour sera -1. En cas d’erreur, -3 sera renvoyé

Syntax

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

Return Value

L’index de base 0 du caractère le plus proche, -1 si aucun caractère ne se trouve dans la région de tolérance spécifiée, ou -3 si une erreur interne se produit (par exemple, si aucune page n’est chargée)

Description

CharacterIndexAtPos mappe un point en coordonnées de l’espace utilisateur PDF vers l’index du caractère le plus proche sur la page courante. C’est l’opération inverse de la lecture de Character[Index] ou de RectangleCount : à partir d’une position (par exemple un clic souris converti en coordonnées de page), la méthode identifie le caractère visé par l’utilisateur

Les paramètres X et Y spécifient le point de requête en unités de l’espace utilisateur PDF. L’origine se trouve au coin inférieur gauche de la page, avec Y croissant vers le haut. Les paramètres ToleranceX et ToleranceY étendent une région de recherche rectangulaire autour du point de requête ; tout caractère dont la boîte englobante intersecte cette région est un candidat

Si aucun caractère n’est trouvé dans la région de tolérance, la fonction renvoie -1. Une valeur de retour -3 indique une erreur, généralement parce qu’aucune page n’est actuellement ouverte. En cas de succès, l’index renvoyé peut être passé directement à RectangleCount et Character, ou servir d’argument StartIndex à FindFirst

Lors de la conversion de coordonnées écran (pixels) en coordonnées de l’espace utilisateur PDF, utilisez la largeur et la hauteur de la page avec le niveau de zoom actuel pour mettre à l’échelle correctement

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