PDFium Delphi Component Docs

CharacterIndexAtPos Methode

Komponente: TPdf  ·  Unit: PDFium
Gibt den Index eines Zeichens an oder nahe einer bestimmten Position auf der Seite zurück. Wenn sich an oder nahe dem Punkt kein Zeichen befindet, ist der Rückgabewert -1. Wenn ein Fehler auftritt, wird -3 zurückgegeben

Syntax

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

Return Value

Der nullbasierte Index des nächsten Zeichens, -1, wenn kein Zeichen in die angegebene Toleranzregion fällt, oder -3, wenn ein interner Fehler auftritt (zum Beispiel, wenn keine Seite geladen ist)

Description

CharacterIndexAtPos ordnet einen Punkt in PDF-Benutzerkoordinaten dem Index des nächstgelegenen Zeichens auf der aktuellen Seite zu. Es handelt sich um die Umkehroperation zum Lesen von Character[Index] oder RectangleCount: Bei gegebener Position (etwa einem in Seitenkoordinaten umgerechneten Mausklick) ermittelt die Funktion, auf welches Zeichen der Benutzer gezeigt hat

Die Parameter X und Y geben den Abfragepunkt in PDF-Benutzereinheiten an. Der Ursprung liegt an der unteren linken Ecke der Seite, wobei Y nach oben zunimmt. Die Parameter ToleranceX und ToleranceY erweitern einen rechteckigen Suchbereich um den Abfragepunkt; jedes Zeichen, dessen Begrenzungsbox diesen Bereich schneidet, ist ein Kandidat

Wird innerhalb des Toleranzbereichs kein Zeichen gefunden, gibt die Funktion -1 zurück. Ein Rückgabewert von -3 weist auf einen Fehler hin, in der Regel weil gerade keine Seite geöffnet ist. Bei Erfolg kann der zurückgegebene Index direkt an RectangleCount oder Character übergeben oder als StartIndex-Argument von FindFirst verwendet werden

Verwenden Sie beim Umrechnen von Bildschirm-(Pixel-)Koordinaten in PDF-Benutzerkoordinaten die Seitenbreite und -höhe zusammen mit der aktuellen Zoomstufe, um entsprechend zu skalieren

Example

var
  CharIdx: Integer;
  PageX, PageY: Double;
begin
  Pdf1.PageIndex := 0;
  // PageX/PageY sind bereits in PDF-Benutzereinheiten umgerechnet
  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