function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Tamsayı. Ölçülecek segmentteki ilk karakterin 0 tabanlı dizini. Varsayılan 0 |
| Count | Tamsayı. StartIndex değerinden başlayarak ölçüme dahil edilecek karakter sayısı. Varsayılan MaxInt; bu, sayfadaki kalan tüm karakterleri kapsar |
Rectangle[0] ile Rectangle[RectangleCount - 1] arasındaki dizinli özellik üzerinden erişilebilirRectangleCount, geçerli sayfadaki birbirini izleyen karakterlerden oluşan bir run'ı birlikte kapsayan bounding rectangle kümesini hesaplar. Aynı satırda olup aynı font ayarlarını paylaşan karakterler otomatik olarak tek bir rectangle'a birleştirilir; böylece sonuç, metni vurgulamak için gereken çakışmayan kutuların en az sayısına iner
StartIndex ve Count parametreleri ölçülecek karakter segmentini tanımlar. Tipik kullanım, bir arama sonucu için vurgulama rectangle'ları elde etmek amacıyla FindFirst ya da FindNext tarafından döndürülen eşleşme dizinini StartIndex olarak, arama dizgesinin uzunluğunu da Count olarak geçmektir
Dönen rectangle'lar iç bir arabellek içinde saklanır ve RectangleCount'un bir sonraki çağrısına kadar geçerlidir. Her rectangle'a Rectangle[Index] özelliğini 0 ile RectangleCount - 1 aralığında okuyarak erişin. Tüm koordinatlar PDF user-space birimlerindedir (points, origin at lower-left)
Sayfadaki tüm karakterlerin düz sayımı için CharacterCount kullanın; belirli bir karakterin sayfadaki konumunu bulmak için CharacterIndexAtPos kullanın
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;