function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer。計測対象セグメントの最初の文字の 0 始まりインデックス。既定値は 0 です |
| Count | Integer。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;