PDFium Delphi Component Docs

Metoda CharacterIndexAtPos

Komponenta: TPdf  ·  Jedinica: PDFium
Dohvaća indeks znaka na ili u blizini određene pozicije na stranici. Ako na toj točki ili u blizini nema znaka, povratna vrijednost bit će -1. Ako dođe do pogreške, vratit će se -3

Sintaksa

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

Povratna vrijednost

Nultiindeksirani indeks najbližeg znaka, -1 ako nijedan znak ne pada unutar navedenog područja tolerancije, ili -3 ako dođe do interne pogreške (na primjer, ako nijedna stranica nije učitana)

Opis

CharacterIndexAtPos preslikava točku u PDF koordinatama korisničkog prostora na indeks najbližeg znaka na trenutnoj stranici. To je inverzna operacija čitanja Character[Index] ili RectangleCount: za zadanu poziciju (primjerice klik miša preveden u koordinate stranice) utvrđuje na koji je znak korisnik pokazao

Parametri X i Y određuju točku upita u PDF jedinicama korisničkog prostora. Ishodište je u donjem lijevom kutu stranice, a Y raste prema gore. Parametri ToleranceX i ToleranceY proširuju pravokutnu regiju pretraživanja oko točke upita; svaki znak čije granično polje siječe tu regiju jest kandidat

Ako se unutar regije tolerancije ne pronađe nijedan znak, funkcija vraća -1. Povratna vrijednost -3 označava pogrešku, tipično zato što trenutačno nijedna stranica nije otvorena. Pri uspjehu se vraćeni indeks može izravno proslijediti u RectangleCount, Character ili koristiti kao argument StartIndex funkcije FindFirst

Prilikom pretvorbe koordinata zaslona (piksela) u PDF koordinate korisničkog prostora koristite širinu i visinu stranice zajedno s trenutačnom razinom zumiranja za odgovarajuće skaliranje

Primjer

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;

Vidi također

CharacterCount, Character, FindFirst, RectangleCount