PDFium Delphi Component Docs

FindFirst メソッド

コンポーネント: TPdf  ·  ユニット: PDFium
指定したテキストの検索を開始します。StartIndex は 0 起点で、-1 はページ末尾を意味します。DirectionUp パラメーターがこの検索操作の方向を決定します

構文

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

TextWString。現在のページで検索する Unicode テキスト文字列です
OptionsTSearchOptions。マッチングの動作を制御する TSearchOption フラグの集合です。サポートされるフラグは soMatchCase (大文字小文字を区別するマッチ) と soMatchWholeWord (完全な単語のみにマッチ) です。大文字小文字を区別せず部分文字列を検索するには [] を渡します
StartIndexInteger。検索を開始する 0 起点の文字インデックスです。-1 を渡すとページの最後の文字から開始します (DirectionUp が False のときに便利です)。デフォルトは 0 です
DirectionUpBoolean。初期の検索方向を決定します。True (デフォルト) は StartIndex からページ末尾へ向かって検索し、False はページ先頭へ向かって検索します。以降の FindNext の呼び出しは常に前へ、FindPrevious は常に後ろへ進みます

戻り値

最初のマッチの 0 起点の文字インデックスです。マッチが見つからない場合は -1 になります。内部の検索ハンドルは保持されるため、以降の FindNext や FindPrevious の呼び出しは再初期化なしで検索を続けられます

説明

FindFirst は、現在読み込まれている PDF ページ上の全文検索を開始します。Unicode 検索文字列と、省略可能なマッチングフラグ、開始文字位置、方向のヒントを受け取ります。成功すると最初のマッチの 0 起点の文字インデックスを返し、以降の FindNext や FindPrevious の呼び出しで再利用される内部の検索ハンドルを保持します。テキストが見つからない場合は -1 を返します

StartIndex パラメーターを使うと、常にページ先頭から始めるのではなく、任意の文字位置から検索を始められます。最初の文字から始めるには 0 (デフォルト) を、最後の文字に固定するには -1 を渡します — DirectionUp = False による逆方向検索の際に便利です

Options パラメーターでマッチングの動作を絞り込めます。soMatchCase は大文字小文字を区別する比較を有効にし、soMatchWholeWord はマッチを完全な単語だけに限定します。両方のフラグは組み合わせられます。空の集合 [] を渡すと大文字小文字を区別しない部分文字列検索になります

マッチが見つかったら、返されたインデックスと既知のマッチ長を RectangleCount に渡すことで、ページ上のマッチしたテキストの外接矩形を取得できます — ビューアーで検索結果をハイライトするのに役立ちます

例

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;

関連項目

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