function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;
| StartIndex | Integer。要测量段中第一个字符的基于 0 的索引。默认值为 0 |
| Count | Integer。从 StartIndex 开始要包含在测量中的字符数。默认值为 MaxInt,覆盖页面上所有剩余字符 |
Rectangle[0] 到 Rectangle[RectangleCount - 1] 的索引属性访问每个矩形RectangleCount 计算共同覆盖当前页面上连续字符段的边界矩形集合。同一行上共享相同字体设置的字符会自动合并为单个矩形,将结果减少到高亮文本所需的最少非重叠框数
StartIndex 和 Count 参数定义要测量的字符段。典型用法是将 FindFirst 或 FindNext 返回的匹配索引作为 StartIndex,将搜索字符串的长度作为 Count,以获得搜索结果的矩形
返回的矩形存储在内部缓冲区中,并在下一次调用 RectangleCount 之前保持有效。通过读取 Index 在 0 到 RectangleCount - 1 范围内的 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];
// 使用 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;