PDFium Delphi Component Docs

FindFirst متد

کامپوننت: TPdf  ·  واحد: PDFium
جست‌وجوی متن مشخص‌شده را آغاز می‌کند. StartIndex صفرمبناست، -1 برای انتهای صفحه است. پارامتر DirectionUp جهت این عملیات جست‌وجو را تعیین می‌کند

Syntax

function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;

TextWString. رشتهٔ متن Unicode برای جست‌وجو در صفحهٔ فعلی
OptionsTSearchOptions. مجموعه‌ای از پرچم‌های TSearchOption که رفتار تطبیق را کنترل می‌کنند. پرچم‌های پشتیبانی‌شده soMatchCase (تطبیق حساس به بزرگی و کوچکی حروف) و soMatchWholeWord (فقط تطبیق واژهٔ کامل) هستند. برای جست‌وجوی غیرحساس به بزرگی حروف و مبتنی بر زیررشته [] را پاس دهید
StartIndexInteger. اندیس نویسهٔ صفرمبنا که جست‌وجو از آن آغاز می‌شود. برای شروع از آخرین نویسهٔ صفحه -1 را پاس دهید (کاربردی وقتی DirectionUp برابر False است). پیش‌فرض 0 است
DirectionUpBoolean. جهت آغازین جست‌وجو را تعیین می‌کند. True (پیش‌فرض) از StartIndex به سمت انتهای صفحه جست‌وجو می‌کند؛ False به سمت آغاز جست‌وجو می‌کند. فراخوانی‌های بعدی FindNext همیشه به جلو حرکت می‌کنند؛ FindPrevious همیشه به عقب حرکت می‌کند

Return Value

اندیس نویسهٔ صفرمبنای نخستین تطبیق، یا -1 اگر هیچ تطبیقی یافت نشود. هندل جست‌وجوی داخلی نگه داشته می‌شود تا فراخوانی‌های بعدی FindNext یا FindPrevious بتوانند جست‌وجو را بدون مقداردهی دوباره ادامه دهند

Description

FindFirst جست‌وجوی تمام‌متن را روی صفحهٔ PDF بارگذاری‌شدهٔ فعلی آغاز می‌کند. رشتهٔ جست‌وجوی Unicode را همراه با پرچم‌های تطبیق اختیاری، موقعیت نویسهٔ آغازین و اشارهٔ جهت می‌پذیرد. در صورت موفقیت اندیس نویسهٔ صفرمبنای نخستین تطبیق را برمی‌گرداند و یک هندل جست‌وجوی داخلی ذخیره می‌کند که در فراخوانی‌های بعدی FindNext و FindPrevious بازاستفاده می‌شود. وقتی متن یافت نشود -1 برمی‌گرداند.

پارامتر StartIndex به شما اجازه می‌دهد جست‌وجو را در هر موقعیت نویسه‌ای آغاز کنید نه همیشه از بالای صفحه. برای شروع از همان نخستین نویسه 0 (پیش‌فرض) را پاس دهید، یا برای لنگرشدن در آخرین نویسه -1 را پاس دهید — که هنگام انجام جست‌وجوی معکوس با DirectionUp = False کارآمد است

از پارامتر Options برای تنظیم دقیق رفتار تطبیق استفاده کنید. soMatchCase مقایسهٔ حساس به بزرگی و کوچکی حروف را فعال می‌کند؛ soMatchWholeWord تطبیق‌ها را فقط به واژه‌های کامل محدود می‌کند. هر دو پرچم را می‌توان ترکیب کرد. پاس‌دادن مجموعهٔ خالی [] یک جست‌وجوی زیررشته‌ای غیرحساس به بزرگی حروف انجام می‌دهد

پس از یافتن یک تطبیق، RectangleCount را با اندیس بازگشتی و طول شناخته‌شدهٔ تطبیق فراخوانی کنید تا مستطیل‌های محیطی متن تطبیق‌یافته روی صفحه را بازیابی کنید — برای برجسته‌سازی نتایج جست‌وجو در یک نمایشگر کارآمد است

Example

var
  Idx, MatchLen, R, I: Integer;
  Rect: TPdfRectangle;
begin
  Pdf1.PageIndex := 0;
  MatchLen := Length('invoice');
  Idx := Pdf1.FindFirst('invoice', [], 0, True);
  while Idx >= 0 do
  begin
    // Retrieve bounding rectangles for the matched text
    R := Pdf1.RectangleCount(Idx, MatchLen);
    for I := 0 to R - 1 do
    begin
      Rect := Pdf1.Rectangle[I];
      Memo1.Lines.Add(Format('Match at char %d, rect [%.1f,%.1f,%.1f,%.1f]',
        [Idx, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom]));
    end;
    Idx := Pdf1.FindNext;
  end;
end;

See Also

CreateDocumentSearch, FindNext, FindPrevious, Find, CharacterIndexAtPos, CharacterCount, RectangleCount, Text