https://www.cnblogs.com/txgh/p/15807085.html

在窗体上放置TPdfView组件PdfView1和TPdf组件Pdf1,并设置PdfView1的Pdf属性指向Pdf1

增加PdfView1的OnPaint事件PdfView1Paint

在窗体上放置TButton组件Button10 和 Button11,并设置Button10的Caption为开始查找 Button11的Caption为查找下一个

点击Button10开始查找,再点击Button11查找下一个,查找到的内容背景色变为黄色

var
  SearchStart: Integer = -1;
  SearchEnd: Integer = -1;
  SearchText: WString;

procedure TForm1.Button10Click(Sender: TObject);
begin
  //读取pdf文件
  Pdf1.FileName := 'C:\LargeFile.pdf';
  //设置要查找的页
  PdfView1.PageNumber := 1;
  //打开PDF
  PdfView1.Active := True;
  //查找的内容
  SearchText := '星期一';
  //初始化查找信息
  SearchStart := PdfView1.FindFirst(SearchText, []);
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
  //只有调用FindFirst后才能调用FindNext或FindPrevious
  if SearchStart = -1 then Exit;
  //查找下一个
  SearchStart := PdfView1.FindNext;
  //查找上一个
  //SearchStart := Pdf1.FindPrevious;
  //如果当前页没有找到时,切换下一页继续查找
  if SearchStart > -1 then
  begin
    //重绘页面
    PdfView1.Invalidate;
  end
  else if PdfView1.PageNumber < PdfView1.PageCount then
  begin
    PdfView1.PageNumber := PdfView1.PageNumber + 1;
    SearchStart := PdfView1.FindFirst(SearchText, []);
  end;
end;

procedure TForm1.PdfView1Paint(Sender: TObject);
begin
  if not PdfView1.Active then Exit;
  if SearchStart > -1 then
  begin
    //计算字符长度 AnsiString字符的delphi版本,PDFium中使用的是WString类型
    SearchEnd := SearchStart + Length(SearchText) - 1;
    //设置背景色
    PdfView1.PaintSelection(SearchStart, SearchEnd, clYellow);
  end;
end;