PDFium Delphi Component Docs

CharacterIndexAtPos Metod

Component: TPdf  ·  Unit: PDFium
Hämta indexet för ett tecken vid eller nära en viss position på sidan. Om det inte finns något tecken vid eller nära punkten blir returvärdet -1. Om ett fel uppstår returneras -3

Syntax

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

Return Value

Returnerar det nollbaserade indexet för närmaste tecken, -1 om inget tecken ligger inom det angivna toleransområdet, eller -3 om ett internt fel uppstår (till exempel om ingen sida är inläst)

Description

CharacterIndexAtPos mappar en punkt i PDF-användarytelskoordinater till indexet för närmaste tecken på den aktuella sidan. Det är den omvända operationen till att läsa Character[Index] eller RectangleCount: given en position (som ett musklick översatt till sidkoordinater) identifierar den vilket tecken användaren pekade på

Parametrarna X och Y anger frågepunkten i PDF-användarenheter. Origo ligger i sidans nedre vänstra hörn, med Y ökande uppåt. Parametrarna ToleranceX och ToleranceY utökar ett rektangulärt sökområde runt frågepunkten; varje tecken vars begränsningsruta skär det området är en kandidat

Om inget tecken hittas inom toleransområdet returnerar funktionen -1. Returvärdet -3 indikerar ett fel, vanligtvis för att ingen sida är öppen för tillfället. Vid lyckat resultat kan det returnerade indexet skickas direkt till RectangleCount, Character eller användas som argumentet StartIndex till FindFirst

Vid konvertering av skärmkoordinater (pixlar) till PDF-användarytelskoordinater, använd sidans bredd och höjd tillsammans med den aktuella zoomnivån för att skala korrekt

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