PDFium Delphi Component Docs

FindFirst-metodi

Komponentti: TPdf  ·  Yksikkö: PDFium
Aloittaa määritetyn tekstin haun. StartIndex on 0-pohjainen, -1 tarkoittaa sivun loppua. DirectionUp-parametri määrittää tämän hakuoperaation suunnan

Syntax

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

TextWString. Nykyiseltä sivulta haettava Unicode-tekstimerkkijono
OptionsTSearchOptions. Joukko TSearchOption-lippuja, jotka ohjaavat täsmäyskäyttäytymistä. Tuetut liput ovat soMatchCase (kirjainkoon huomioiva täsmäys) ja soMatchWholeWord (vain kokonaisten sanojen täsmäys). Välitä [] kirjainkoosta riippumattomaan osamerkkijonohakuun
StartIndexInteger. 0-pohjainen merkki-indeksi, josta haku alkaa. Välitä -1 aloittaaksesi sivun viimeisestä merkistä (hyödyllistä, kun DirectionUp on False). Oletusarvo on 0
DirectionUpBoolean. Määrittää alkuperäisen hakusuunnan. True (oletus) hakee StartIndex-kohdasta sivun loppua kohti; False hakee alkua kohti. Myöhemmät FindNext-kutsut siirtyvät aina eteenpäin; FindPrevious siirtyy aina taaksepäin

Return Value

Ensimmäisen osuman 0-pohjainen merkki-indeksi tai -1, jos osumaa ei löydy. Sisäinen hakukahva säilytetään, jotta myöhemmät FindNext- tai FindPrevious-kutsut voivat jatkaa hakua ilman uudelleenalustusta

Description

FindFirst käynnistää kokotekstihaun tällä hetkellä ladatulla PDF-sivulla. Se hyväksyy Unicode-hakumerkkijonon sekä valinnaiset täsmäysliput, aloitusmerkkipaikan ja suuntavihjeen. Onnistuessaan se palauttaa ensimmäisen osuman 0-pohjaisen merkki-indeksin ja tallentaa sisäisen hakukahvan, jota myöhemmät FindNext- ja FindPrevious-kutsut käyttävät uudelleen. Palauttaa -1, kun tekstiä ei löydy

StartIndex-parametrilla haku voidaan aloittaa mistä tahansa merkkipaikasta sen sijaan, että se alkaisi aina sivun alusta. Välitä 0 (oletus) aloittaaksesi aivan ensimmäisestä merkistä, tai välitä -1 ankkuroidaksesi haun viimeiseen merkkiin — kätevää, kun teet käänteisen haun asetuksella DirectionUp = False

Käytä Options-parametria täsmäyskäyttäytymisen tarkentamiseen. soMatchCase ottaa käyttöön kirjainkoon huomioivan vertailun; soMatchWholeWord rajoittaa osumat vain kokonaisiin sanoihin. Molemmat liput voidaan yhdistää. Tyhjän joukon [] välittäminen tekee kirjainkoosta riippumattoman osamerkkijonohaun

Kun osuma on löytynyt, kutsu RectangleCount-metodia palautetulla indeksillä ja tunnetulla osuman pituudella hakeaksesi täsmänneen tekstin rajaavat suorakulmiot sivulla — hyödyllistä hakutulosten korostamiseen katselimessa

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