PDFium Delphi Component Docs

FindFirst Método

Componente: TPdf  ·  Unidad: PDFium
Inicia una búsqueda del texto indicado. StartIndex es en base 0; -1 es para el final de la página. El parámetro DirectionUp determina la dirección de esta operación de búsqueda

Syntax

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

TextWString. La cadena de texto Unicode que se va a buscar en la página actual
OptionsTSearchOptions. Un conjunto de marcas TSearchOption que controlan el comportamiento de coincidencia. Las marcas soportadas son soMatchCase (coincidencia con distinción de mayúsculas) y soMatchWholeWord (solo coincidencia de palabra completa). Pase [] para una búsqueda de subcadenas sin distinción de mayúsculas
StartIndexInteger. El índice de carácter basado en 0 en el que comienza la búsqueda. Pase -1 para empezar desde el último carácter de la página (útil cuando DirectionUp es False). El valor predeterminado es 0
DirectionUpBoolean. Determina la dirección de búsqueda inicial. True (predeterminado) busca desde StartIndex hacia el final de la página; False busca hacia el principio. Las llamadas posteriores a FindNext siempre avanzan; FindPrevious siempre retrocede

Return Value

El índice de carácter en base 0 de la primera coincidencia, o -1 si no se encuentra ninguna. El handle interno de búsqueda se conserva, de modo que las llamadas posteriores a FindNext o FindPrevious pueden continuar la búsqueda sin reinicializarla

Description

FindFirst inicia una búsqueda de texto completo en la página PDF cargada actualmente. Acepta una cadena de búsqueda Unicode junto con marcas de coincidencia opcionales, una posición de carácter inicial y una pista de dirección. Si tiene éxito, devuelve el índice de carácter basado en 0 de la primera coincidencia y almacena un manejador de búsqueda interno que se reutiliza en las llamadas posteriores a FindNext y FindPrevious. Devuelve -1 cuando no se encuentra el texto

El parámetro StartIndex le permite iniciar la búsqueda en cualquier posición de carácter en lugar de siempre desde la parte superior de la página. Pase 0 (el valor predeterminado) para empezar desde el primer carácter, o pase -1 para anclar en el último carácter — conveniente al realizar una búsqueda inversa con DirectionUp = False

Use el parámetro Options para refinar el comportamiento de coincidencia. soMatchCase habilita una comparación que distingue mayúsculas; soMatchWholeWord restringe las coincidencias solo a palabras completas. Ambas marcas pueden combinarse. Pasar un conjunto vacío [] realiza una búsqueda de subcadenas sin distinción de mayúsculas

Una vez encontrada una coincidencia, llame a RectangleCount con el índice devuelto y la longitud conocida de la coincidencia para recuperar los rectángulos delimitadores del texto coincidente en la página — útil para resaltar los resultados de búsqueda en un visor

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
    // Recuperar rectángulos delimitadores del texto coincidente
    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

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