function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. 현재 페이지에서 찾을 Unicode 텍스트 문자열입니다 |
| Options | TSearchOptions. 매칭 동작을 제어하는 TSearchOption 플래그 집합입니다. 지원 플래그는 soMatchCase(대소문자 구분 매칭)와 soMatchWholeWord(단어 단위 매칭만)입니다. []를 넘기면 대소문자를 무시하는 부분 문자열 검색이 됩니다 |
| StartIndex | Integer. 검색을 시작할 0 기반 문자 인덱스입니다. -1을 넘기면 페이지의 마지막 문자부터 시작합니다(DirectionUp이 False일 때 유용). 기본값은 0입니다 |
| DirectionUp | Boolean. 초기 검색 방향을 정합니다. True(기본값)는 StartIndex에서 페이지 끝을 향해 검색하고 False는 페이지 시작을 향해 검색합니다. 이후 FindNext 호출은 항상 앞으로, FindPrevious 호출은 항상 뒤로 움직입니다 |
-1을 반환합니다. 내부 검색 핸들은 유지되므로 이후 FindNext 또는 FindPrevious 호출이 재초기화 없이 검색을 이어갈 수 있습니다FindFirst는 현재 로드된 PDF 페이지에서 전문 검색을 시작합니다. Unicode 검색 문자열에 선택적 매칭 플래그, 시작 문자 위치, 방향 힌트를 함께 받습니다. 성공하면 첫 일치의 0 기반 문자 인덱스를 반환하고 내부 검색 핸들을 저장해 이후 FindNext와 FindPrevious 호출이 그 핸들을 재사용합니다. 텍스트를 찾지 못하면 -1을 반환합니다
StartIndex 파라미터 덕분에 항상 페이지 처음이 아니라 임의의 문자 위치에서 검색을 시작할 수 있습니다. 맨 첫 문자부터 시작하려면 0(기본값)을, 마지막 문자에 고정하려면 -1을 넘기세요 — DirectionUp = False로 역방향 검색할 때 편리합니다
매칭 동작을 세밀히 조정하려면 Options 파라미터를 쓰세요. soMatchCase는 대소문자를 구분하는 비교를 켜고, soMatchWholeWord는 단어 단위 일치로 제한합니다. 두 플래그는 조합할 수 있습니다. 빈 집합 []을 넘기면 대소문자를 무시하는 부분 문자열 검색이 됩니다
일치를 찾은 뒤에는 반환된 인덱스와 알고 있는 일치 길이로 RectangleCount를 호출해 페이지에서 일치 텍스트의 바운딩 사각형들을 얻으세요 — 뷰어에서 검색 결과를 하이라이트할 때 유용합니다
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;