function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. A string de texto Unicode a ser procurada na página atual |
| Options | TSearchOptions. 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 |
| StartIndex | Integer. 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 |
| DirectionUp | Boolean. 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 |
-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çãoFindFirst 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
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;