PDFium Delphi Component Docs

RectangleCount メソッド

コンポーネント: TPdf  ·  ユニット: PDFium
テキストのセグメントが占める矩形領域の数を数えます。同じ行にあり同じフォント設定を使う文字は、大きな矩形へ自動的に統合されます

構文

function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;

StartIndexInteger。計測対象セグメントの最初の文字の 0 始まりインデックス。既定値は 0 です
CountInteger。StartIndex から数え始める、計測に含める文字数。既定値は MaxInt で、ページ上の残りすべての文字をカバーします

戻り値

指定された文字セグメントをカバーする統合済み外接矩形の数。この呼び出しの後、各矩形には Rectangle[0] から Rectangle[RectangleCount - 1] までのインデックス付きプロパティでアクセスできます

説明

RectangleCount は、現在のページ上の連続した文字列を一緒にカバーする外接矩形の集合を計算します。同じ行にあり同じフォント設定を共有する文字は自動的に 1 つの矩形へ統合され、テキストをハイライトするために必要な重なりなしの矩形が最小数に抑えられます

StartIndex と Count のパラメーターが計測対象の文字セグメントを定義します。典型的な使い方は、FindFirst または FindNext が返したマッチインデックスを StartIndex に、検索文字列の長さを Count に渡して、検索結果のハイライト矩形を得ることです

返される矩形は内部バッファに格納され、次に RectangleCount を呼び出すまで有効です。各矩形は、0 から RectangleCount - 1 の範囲の Index について Rectangle[Index] プロパティを読み取って取得します。すべての座標は PDF ユーザー空間単位 (ポイント、原点は左下) です

ページ上の全文字数を単純に数えるには CharacterCount を、特定の文字がページ上のどこにあるかを調べるには CharacterIndexAtPos を使用します

例

var
  MatchIdx, RCount, I: Integer;
  Rect: TPdfRectangle;
begin
  Pdf1.PageIndex := 0;
  MatchIdx := Pdf1.FindFirst('PDFium');
  if MatchIdx >= 0 then
  begin
    RCount := Pdf1.RectangleCount(MatchIdx, Length('PDFium'));
    for I := 0 to RCount - 1 do
    begin
      Rect := Pdf1.Rectangle[I];
      // Draw a highlight box using Rect.Left/Top/Right/Bottom
      Memo1.Lines.Add(Format('Rect %d: (%.1f, %.1f, %.1f, %.1f)',
        [I, Rect.Left, Rect.Bottom, Rect.Right, Rect.Top]));
    end;
  end;
end;

関連項目

Rectangle, FindFirst, CharacterCount, CharacterIndexAtPos, Text