PDFium Component Docs

FindFirst 메서드

이 API 항목은 식별자, 시그니처, 코드 블록, PDF 용어를 원래 형태로 유지합니다.
컴포넌트: TPdf  ·  유닛: PDFium
지정한 텍스트 검색을 시작합니다. StartIndex는 0 기반이며, -1은 page의 끝을 뜻합니다. DirectionUp 매개변수는 이 검색 작업의 방향을 결정합니다

구문

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

TextWString. 현재 page에서 찾을 Unicode 텍스트 문자열입니다
OptionsTSearchOptions. 매칭 동작을 제어하는 TSearchOption 플래그 집합입니다. 지원되는 플래그는 soMatchCase(대소문자 구분)와 soMatchWholeWord(단어 전체만 일치)입니다. 대소문자를 구분하지 않는 부분 문자열 검색은 []를 넘기세요
StartIndexInteger. 검색을 시작할 0 기반 character index입니다. -1을 넘기면 page의 마지막 문자부터 시작합니다(DirectionUpFalse일 때 유용합니다). 기본값은 0입니다
DirectionUpBoolean. 초기 검색 방향을 결정합니다. True(기본값)는 StartIndex에서 page 끝 쪽으로 검색하고, False는 시작 쪽으로 검색합니다. 이후 FindNext 호출은 항상 앞으로, FindPrevious 호출은 항상 뒤로 이동합니다

Return Value

첫 번째 일치의 0 기반 character index를 반환하며, 일치를 찾지 못하면 -1을 반환합니다. 내부 검색 핸들은 유지되므로 이후 FindNext 또는 FindPrevious 호출이 재초기화 없이 검색을 이어갈 수 있습니다

설명

FindFirst는 현재 로드된 PDF page에서 전체 텍스트 검색을 시작합니다. Unicode 검색 문자열과 선택적 매칭 플래그, 시작 character 위치, 방향 힌트를 받습니다. 성공하면 첫 번째 일치의 0 기반 character index를 반환하고, 이후 FindNextFindPrevious 호출에 재사용되는 내부 검색 핸들을 저장합니다. 텍스트를 찾지 못하면 -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;

참고 항목

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