function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. La stringa di testo Unicode da cercare sulla pagina corrente |
| Options | TSearchOptions. 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 |
| StartIndex | Integer. 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 |
| DirectionUp | Boolean. 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 |
-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.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.
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;