function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer. 0-based indeks pierwszego znaku w segmencie do zmierzenia. Domyślnie 0 |
| Count | Integer. Liczba znaków uwzględnianych w pomiarze, liczona od StartIndex. Domyślnie MaxInt, co obejmuje wszystkie pozostałe znaki na stronie |
Rectangle[0] do Rectangle[RectangleCount - 1]RectangleCount oblicza zestaw prostokątów ograniczających, które razem pokrywają ciągły fragment znaków na bieżącej stronie. Znaki w tej samej linii, które mają te same ustawienia fontu, są automatycznie scalane do jednego prostokąta, co sprowadza wynik do minimalnej liczby niepokrywających się ramek potrzebnych do podświetlenia tekstu
Parametry StartIndex i Count definiują segment znaków do zmierzenia. Typowe użycie polega na przekazaniu indeksu dopasowania zwróconego przez FindFirst lub FindNext jako StartIndex oraz długości ciągu wyszukiwania jako Count, aby uzyskać prostokąty podświetlenia dla wyniku wyszukiwania
Zwrócone prostokąty są przechowywane w wewnętrznym buforze i pozostają ważne do następnego wywołania RectangleCount. Każdy prostokąt pobierasz, odczytując właściwość Rectangle[Index] dla Index w zakresie od 0 do RectangleCount - 1. Wszystkie współrzędne są w jednostkach przestrzeni użytkownika PDF (punkty, początek w lewym dolnym rogu)
Aby zwyczajnie policzyć wszystkie znaki na stronie, użyj CharacterCount; aby znaleźć, gdzie na stronie leży konkretny znak, użyj 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;