PDFium Delphi Component Docs

FindFirst Metodo

Componente: TPdf  ·  Unità: PDFium
Avvia una ricerca del testo specificato. StartIndex è basato su zero, -1 indica la fine della pagina. Il parametro DirectionUp determina la direzione di questa operazione di ricerca.

Syntax

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

TextWString. La stringa di testo Unicode da cercare sulla pagina corrente
OptionsTSearchOptions. Un insieme di flag TSearchOption che controllano il comportamento di confronto. I flag supportati sono soMatchCase (corrispondenza case-sensitive) e soMatchWholeWord (solo parole intere). Passa [] per una ricerca per sottostringa senza distinzione maiuscole/minuscole
StartIndexInteger. L'indice di carattere a base zero da cui inizia la ricerca. Passa -1 per partire dall'ultimo carattere della pagina (utile quando DirectionUp è False). Predefinito 0
DirectionUpBoolean. Determina la direzione di ricerca iniziale. True (predefinito) cerca da StartIndex verso la fine della pagina; False cerca verso l'inizio. Le chiamate successive a FindNext avanzano sempre; FindPrevious retrocede sempre

Return Value

L'indice del carattere, basato su zero, della prima corrispondenza, oppure -1 se non viene trovata alcuna corrispondenza. L'handle di ricerca interno viene mantenuto così che le chiamate successive a FindNext o FindPrevious possano continuare la ricerca senza reinizializzazione.

Description

FindFirst avvia una ricerca full-text sulla pagina PDF attualmente caricata. Accetta una stringa di ricerca Unicode insieme a flag di corrispondenza opzionali, una posizione iniziale del carattere e un suggerimento di direzione. In caso di successo restituisce l'indice del carattere, basato su zero, della prima corrispondenza e memorizza un handle di ricerca interno riutilizzato dalle successive chiamate FindNext e FindPrevious. Restituisce -1 quando il testo non viene trovato.

Il parametro StartIndex consente di iniziare la ricerca da qualsiasi posizione di carattere anziché sempre dall'inizio della pagina. Passa 0 (il valore predefinito) per partire dal primo carattere, oppure passa -1 per ancorare all'ultimo carattere — comodo quando si esegue una ricerca inversa con DirectionUp = False.

Usa il parametro Options per rifinire il comportamento di corrispondenza. soMatchCase abilita un confronto con distinzione tra maiuscole e minuscole; soMatchWholeWord limita le corrispondenze alle sole parole intere. Entrambi i flag possono essere combinati. Passare un insieme vuoto [] esegue una ricerca di sottostringa senza distinzione tra maiuscole e minuscole.

Una volta trovata una corrispondenza, chiama RectangleCount con l'indice restituito e la lunghezza nota della corrispondenza per recuperare i riquadri di delimitazione del testo corrispondente sulla pagina — utile per evidenziare i risultati di ricerca in un visualizzatore.

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