PDFium Delphi Component Docs

RectangleCount Método

Componente: TPdf  ·  Unidade: PDFium
Conta o número de áreas retangulares ocupadas por um segmento de texto. A função mescla automaticamente caixas pequenas de caracteres em uma maior se esses caracteres estiverem na mesma linha e usarem as mesmas configurações de fonte

Syntax

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

StartIndexInteger. O índice iniciado em 0 do primeiro caractere no segmento a medir. Tem padrão 0
CountInteger. O número de caracteres a incluir na medição, começando em StartIndex. Tem padrão MaxInt, que cobre todos os caracteres restantes da página

Return Value

O número de retângulos de limite mesclados que cobrem o segmento de caracteres especificado. Após esta chamada, cada retângulo fica acessível por meio da propriedade indexada Rectangle[0] até Rectangle[RectangleCount - 1]

Description

RectangleCount calcula o conjunto de retângulos delimitadores que juntos cobrem uma sequência contígua de caracteres na página atual. Caracteres na mesma linha que compartilham as mesmas configurações de fonte são mesclados automaticamente em um único retângulo, reduzindo o resultado ao número mínimo de caixas sem sobreposição necessárias para destacar o texto

Os parâmetros StartIndex e Count definem o segmento de caracteres a medir. Um uso típico é passar o índice de correspondência retornado por FindFirst ou FindNext como StartIndex, e o comprimento da string de busca como Count, para obter retângulos de destaque para um resultado de busca

Os retângulos retornados ficam armazenados em um buffer interno e permanecem válidos até a próxima chamada a RectangleCount. Recupere cada retângulo lendo a propriedade Rectangle[Index] com Index no intervalo de 0 a RectangleCount - 1. Todas as coordenadas estão em unidades de espaço do usuário PDF (pontos, origem no canto inferior esquerdo)

Para uma contagem simples de todos os caracteres da página use CharacterCount; para descobrir onde um caractere específico está na página use 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