function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer. Nullbasierter Index des ersten Zeichens im zu messenden Segment. Standardwert ist 0 |
| Count | Integer. Anzahl der Zeichen, die in die Messung einbezogen werden, beginnend bei StartIndex. Standardwert ist MaxInt, womit alle verbleibenden Zeichen auf der Seite erfasst werden |
Rectangle[0] bis Rectangle[RectangleCount - 1] zugänglichRectangleCount berechnet die Menge von Begrenzungsrechtecken, die zusammen einen zusammenhängenden Lauf von Zeichen auf der aktuellen Seite abdecken. Zeichen auf derselben Zeile mit denselben Schrifteinstellungen werden automatisch zu einem einzigen Rechteck zusammengeführt, sodass das Ergebnis auf die minimale Anzahl nicht überlappender Boxen reduziert wird, die zum Hervorheben des Textes nötig sind
Die Parameter StartIndex und Count definieren das zu messende Zeichensegment. Typisch ist es, den von FindFirst oder FindNext zurückgegebenen Trefferindex als StartIndex und die Länge des Suchtexts als Count zu übergeben, um Hervorhebungsrechtecke für ein Suchergebnis zu erhalten
Die zurückgegebenen Rechtecke werden in einem internen Puffer gespeichert und bleiben bis zum nächsten Aufruf von RectangleCount gültig. Lesen Sie jedes Rechteck über die Eigenschaft Rectangle[Index] für Index im Bereich von 0 bis RectangleCount - 1. Alle Koordinaten liegen in PDF-User-Space-Einheiten vor (Punkte, Ursprung unten links)
Für eine reine Zählung aller Zeichen auf der Seite verwenden Sie CharacterCount; um zu finden, wo ein bestimmtes Zeichen auf der Seite liegt, verwenden Sie 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];
// Hervorhebungsrahmen mit Rect.Left/Top/Right/Bottom zeichnen
Memo1.Lines.Add(Format('Rect %d: (%.1f, %.1f, %.1f, %.1f)',
[I, Rect.Left, Rect.Bottom, Rect.Right, Rect.Top]));
end;
end;
end;