PDFium Component Docs

RectangleCount Metoda

Component: TPdf  ·  Unit: PDFium
Zlicza liczbę prostokątnych obszarów zajmowanych przez segment tekstu. Funkcja automatycznie łączy małe prostokąty znaków w większy, jeśli te znaki leżą w tej samej linii i używają tych samych ustawień fontu

Syntax

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

StartIndexInteger. Indeks liczony od zera pierwszego znaku w mierzonym segmencie. Domyślnie 0
CountInteger. Liczba znaków uwzględnianych w pomiarze, licząc od StartIndex. Domyślnie MaxInt, co obejmuje wszystkie pozostałe znaki na stronie

Return Value

Liczba scalonych prostokątów ograniczających, które pokrywają wskazany segment znaków. Po tym wywołaniu każdy prostokąt jest dostępny przez indeksowaną właściwość od Rectangle[0] do Rectangle[RectangleCount - 1]

Description

RectangleCount wyznacza zbiór prostokątów ograniczających, które wspólnie pokrywają ciągły ciąg znaków na bieżącej stronie. Znaki w tej samej linii, które współdzielą te same ustawienia czcionki, są automatycznie scalane w pojedynczy prostokąt, co redukuje wynik do minimalnej liczby nienakładających się prostokątów potrzebnych do podświetlenia tekstu

Parametry StartIndex i Count definiują mierzony segment znaków. Typowe zastosowanie to przekazanie indeksu dopasowania zwróconego przez FindFirst lub FindNext jako StartIndex oraz długości wyszukiwanego ciągu 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. Pobierz każdy prostokąt, odczytując właściwość Rectangle[Index] dla Index z zakresu od 0 do RectangleCount - 1. Wszystkie współrzędne są w jednostkach przestrzeni użytkownika PDF (punkty, początek układu w lewym dolnym rogu)

Do zwykłego zliczenia wszystkich znaków na stronie użyj CharacterCount; aby ustalić, gdzie na stronie znajduje się konkretny znak, użyj 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