PDFium Delphi Component Docs

متد CharacterIndexAtPos

کامپوننت: TPdf  ·  واحد: PDFium
اندیس نویسه‌ای را می‌گیرد که در موقعیتی معین روی صفحه یا نزدیک آن قرار دارد؛ اگر نویسه‌ای در آن نقطه یا نزدیک آن نباشد، مقدار بازگشتی -1 خواهد بود. اگر خطایی رخ دهد، -3 بازگردانده می‌شود

Syntax

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

Return Value

اندیس نزدیک‌ترین نویسه با مبنای صفر، -1 اگر هیچ نویسه‌ای در ناحیهٔ تلورانس مشخص قرار نگیرد، یا -3 اگر خطای داخلی رخ دهد (برای نمونه، هنگامی که هیچ صفحه‌ای بارگذاری نشده باشد)

Description

CharacterIndexAtPos یک نقطه در مختصات فضای کاربری PDF را به اندیس نزدیک‌ترین نویسه در صفحهٔ فعلی نگاشت می‌کند. این عملیات معکوس خواندن Character[Index] یا RectangleCount است: با داشتن یک موقعیت (مانند کلیک ماوس تبدیل‌شده به مختصات صفحه) مشخص می‌کند کاربر به کدام نویسه اشاره کرده است.

پارامترهای X و Y نقطهٔ پرس‌وجو را بر حسب واحدهای فضای کاربری PDF مشخص می‌کنند؛ مبدأ در گوشهٔ پایین-چپ صفحه است و Y به سمت بالا افزایش می‌یابد. پارامترهای ToleranceX و ToleranceY یک ناحیهٔ جستجوی مستطیلی حول نقطهٔ پرس‌وجو گسترش می‌دهند؛ هر نویسه‌ای که جعبهٔ محیطی‌اش با آن ناحیه برخورد داشته باشد نامزد است

اگر هیچ نویسه‌ای در ناحیهٔ تلورانس یافت نشود، تابع -1 برمی‌گرداند. مقدار بازگشتی -3 نشان‌دهندهٔ خطاست که معمولاً به این دلیل است که در حال حاضر هیچ صفحه‌ای باز نیست. در صورت موفقیت، اندیس بازگشتی را می‌توان مستقیماً به RectangleCount یا Character داد یا به‌عنوان آرگومان StartIndex از FindFirst به کار برد

هنگام تبدیل مختصات صفحه‌نمایش (پیکسل) به مختصات فضای کاربری PDF، از عرض و ارتفاع صفحه به همراه سطح بزرگ‌نمایی فعلی برای مقیاس‌بندی مناسب استفاده کنید

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