function FindFirst(const Text: WString; Options: TSearchOptions = []; StartIndex: Integer = 0; DirectionUp: Boolean = True): Integer;
| Text | WString. 현재 page에서 찾을 Unicode 텍스트 문자열입니다 |
| Options | TSearchOptions. 매칭 동작을 제어하는 TSearchOption 플래그 집합입니다. 지원되는 플래그는 soMatchCase(대소문자 구분)와 soMatchWholeWord(단어 전체만 일치)입니다. 대소문자를 구분하지 않는 부분 문자열 검색은 []를 넘기세요 |
| StartIndex | Integer. 검색을 시작할 0 기반 character index입니다. -1을 넘기면 page의 마지막 문자부터 시작합니다(DirectionUp가 False일 때 유용합니다). 기본값은 0입니다 |
| DirectionUp | Boolean. 초기 검색 방향을 결정합니다. True(기본값)는 StartIndex에서 page 끝 쪽으로 검색하고, False는 시작 쪽으로 검색합니다. 이후 FindNext 호출은 항상 앞으로, FindPrevious 호출은 항상 뒤로 이동합니다 |
-1을 반환합니다. 내부 검색 핸들은 유지되므로 이후 FindNext 또는 FindPrevious 호출이 재초기화 없이 검색을 이어갈 수 있습니다FindFirst는 현재 로드된 PDF page에서 전체 텍스트 검색을 시작합니다. Unicode 검색 문자열과 선택적 매칭 플래그, 시작 character 위치, 방향 힌트를 받습니다. 성공하면 첫 번째 일치의 0 기반 character index를 반환하고, 이후 FindNext와 FindPrevious 호출에 재사용되는 내부 검색 핸들을 저장합니다. 텍스트를 찾지 못하면 -1을 반환합니다
StartIndex 매개변수로 항상 page 맨 위에서 시작하지 않고도 원하는 character 위치에서 검색을 시작할 수 있습니다. 0(기본값)을 넘기면 첫 문자에서 시작하고, -1을 넘기면 마지막 문자에 고정됩니다. 이는 DirectionUp = False로 역방향 검색할 때 유용합니다
Options 매개변수로 매칭 동작을 세밀하게 조정할 수 있습니다. soMatchCase는 대소문자 구분 비교를 켜고, soMatchWholeWord는 전체 단어 일치로 제한합니다. 두 플래그는 함께 사용할 수 있습니다. 빈 집합 []을 넘기면 대소문자를 구분하지 않는 부분 문자열 검색이 수행됩니다
일치 항목을 찾으면 반환된 index와 알려진 일치 길이로 RectangleCount를 호출해 page에서 일치 텍스트의 경계 사각형을 가져올 수 있습니다. viewer에서 검색 결과를 강조 표시할 때 유용합니다
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;