PDFium Component Docs

CharacterIndexAtPos method

Component: TPdf  ·  Unit: PDFium
Mendapatkan indeks karakter pada atau dekat posisi tertentu di halaman. Jika tidak ada karakter pada atau dekat titik tersebut, nilai balik akan -1. Jika terjadi error, -3 akan dikembalikan

Syntax

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

Return Value

Indeks berbasis-0 dari karakter terdekat, -1 jika tidak ada karakter yang berada dalam wilayah toleransi yang ditentukan, atau -3 jika terjadi error internal (misalnya, jika tidak ada halaman yang dimuat)

Description

CharacterIndexAtPos memetakan titik dalam koordinat ruang-pengguna PDF ke indeks karakter terdekat pada halaman saat ini. Ini adalah operasi invers dari pembacaan Character[Index] atau RectangleCount: diberikan posisi (seperti klik mouse yang diterjemahkan ke koordinat halaman), ia mengidentifikasi karakter mana yang ditunjuk pengguna

Parameter X dan Y menentukan titik kueri dalam unit ruang-pengguna PDF. Asal berada di sudut kiri bawah halaman, dengan Y meningkat ke atas. Parameter ToleranceX dan ToleranceY memperluas wilayah pencarian persegi panjang di sekitar titik kueri; karakter apa pun yang persegi pembatasnya berpotongan dengan wilayah itu adalah kandidat

Jika tidak ada karakter yang ditemukan dalam wilayah toleransi, fungsi mengembalikan -1. Nilai kembalian -3 menunjukkan error, biasanya karena tidak ada halaman yang sedang terbuka. Setelah berhasil, indeks yang dikembalikan dapat diteruskan langsung ke RectangleCount, Character, atau dipakai sebagai argumen StartIndex dari FindFirst

Saat mengonversi koordinat layar (piksel) ke koordinat ruang-pengguna PDF, gunakan lebar dan tinggi halaman bersama dengan level zoom saat ini untuk menskalakan dengan tepat

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