PDFium Delphi Component 文件

RectangleCount 方法

元件: TPdf  ·  單元: PDFium
計算文字片段所佔據的矩形區域數量。若那些字元位於同一行且使用相同字型設定,函式會自動把小字元框合併成較大的框

Syntax

function RectangleCount(StartIndex: Integer = 0; Count: Integer = MaxInt): Integer;

StartIndexInteger。要測量片段中第一個字元的以 0 為基底索引。預設為 0
CountInteger。從 StartIndex 開始要納入測量的字元數。預設為 MaxInt,涵蓋頁面上所有剩餘字元

Return Value

涵蓋指定字元片段的合併邊界矩形數量。呼叫後,每個矩形都可透過 Rectangle[0] 到 Rectangle[RectangleCount - 1] 索引屬性存取

Description

RectangleCount 會計算一組共同涵蓋目前頁面上連續字元段的邊界矩形。同一行中採用相同字型設定的字元會自動合併為單一矩形,使結果縮減到反白該文字所需數量最少的互不重疊方框

StartIndex 與 Count 參數定義要測量的字元片段。典型用法是把 FindFirst 或 FindNext 傳回的符合索引當作 StartIndex,把搜尋字串的長度當作 Count,以取得搜尋結果的反白矩形

傳回的矩形會儲存在內部緩衝區,並保持有效直到下次呼叫 RectangleCount 為止。請對 Index 在 0 到 RectangleCount - 1 範圍內逐一讀取 Rectangle[Index] 屬性以取得每個矩形。所有座標均為 PDF 使用者空間單位(點,原點位於左下角)

只要取得頁面上所有字元的數量請使用 CharacterCount;要找出特定字元在頁面上的位置請使用 CharacterIndexAtPos

Example

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;

See Also

Rectangle, FindFirst, CharacterCount, CharacterIndexAtPos, Text