PDFium Delphi Component Docs

FindFirst Método

Componente: TPdf  ·  Unidade: PDFium
Inicia uma busca pelo texto especificado. StartIndex é baseado em 0, -1 representa o fim da página. O parâmetro DirectionUp determina a direção dessa operação de busca

Syntax

function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;

TextWString. A string de texto Unicode a ser procurada na página atual
OptionsTSearchOptions. Um conjunto de flags TSearchOption que controlam o comportamento de correspondência. As flags suportadas são soMatchCase (correspondência com diferenciação de maiúsculas) e soMatchWholeWord (somente correspondência de palavra inteira). Passe [] para uma busca de substring sem diferenciação de maiúsculas
StartIndexInteger. O índice de caractere baseado em 0 no qual a busca começa. Passe -1 para começar do último caractere da página (útil quando DirectionUp é False). O padrão é 0
DirectionUpBoolean. Determina a direção inicial da busca. True (padrão) procura de StartIndex até o fim da página; False procura em direção ao início. Chamadas subsequentes a FindNext sempre avançam; FindPrevious sempre retrocede

Return Value

O índice de caractere baseado em 0 da primeira correspondência, ou -1 se nenhuma correspondência for encontrada. O handle interno de busca é retido para que chamadas subsequentes a FindNext ou FindPrevious possam continuar a busca sem reinicialização

Description

FindFirst inicia uma busca de texto completo na página PDF carregada no momento. Aceita uma string de busca Unicode junto com flags opcionais de correspondência, uma posição inicial de caractere e uma dica de direção. Em caso de sucesso, retorna o índice de caractere baseado em 0 da primeira correspondência e armazena um handle interno de busca que é reutilizado por chamadas subsequentes a FindNext e FindPrevious. Retorna -1 quando o texto não é encontrado

O parâmetro StartIndex permite iniciar a busca em qualquer posição de caractere, em vez de sempre do topo da página. Passe 0 (o padrão) para começar do primeiro caractere, ou passe -1 para ancorar no último caractere — conveniente ao executar uma busca reversa com DirectionUp = False

Use o parâmetro Options para refinar o comportamento de correspondência. soMatchCase ativa uma comparação com diferenciação de maiúsculas; soMatchWholeWord restringe as correspondências apenas a palavras inteiras. As duas flags podem ser combinadas. Passar o conjunto vazio [] executa uma busca de substring sem diferenciação de maiúsculas

Depois que uma correspondência é encontrada, chame RectangleCount com o índice retornado e o comprimento conhecido da correspondência para obter os retângulos delimitadores do texto correspondente na página — útil para destacar resultados de busca em um visualizador

Example

var
  Idx, MatchLen, R, I: Integer;
  Rect: TPdfRectangle;
begin
  Pdf1.PageIndex := 0;
  MatchLen := Length('invoice');
  Idx := Pdf1.FindFirst('invoice', [], 0, True);
  while Idx >= 0 do
  begin
    // Retrieve bounding rectangles for the matched text
    R := Pdf1.RectangleCount(Idx, MatchLen);
    for I := 0 to R - 1 do
    begin
      Rect := Pdf1.Rectangle[I];
      Memo1.Lines.Add(Format('Match at char %d, rect [%.1f,%.1f,%.1f,%.1f]',
        [Idx, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom]));
    end;
    Idx := Pdf1.FindNext;
  end;
end;

See Also

FindNext, FindPrevious, Find, CharacterIndexAtPos, CharacterCount, RectangleCount, Text