對PDF文檔中的內容進行查找時,可針對文檔全篇內容獲取查找結果,也可在PDF指定頁面中的特定範圍內(矩形框區域)進行查找,對獲取的查找結果可執行文本高亮或替換等操做,本文將對此做相關介紹(附VB.NET代碼,有須要可參考)。html
關於工具使用工具
工具:需下載Spire.PDF for .NET Pack hotfix 6.12.20版本(注:hotfixt版本無需安裝,若下載的是Pack版本則須要安裝至本地路徑,可在安裝後,查看演示程序及API)。測試
引用:下載並解壓到本地路徑,將Bin文件夾下的Spire.Pdf.dll文件添加引用至VS程序,具體引用方法可參考以下步驟:spa
在VS程序中打開「解決方案資源管理器」-鼠標右鍵點擊「引用」-「添加引用」-而後執行以下操做:.net
添加引用結果如圖:3d
C# 代碼code
using Spire.Pdf; using Spire.Pdf.General.Find; using Spire.Pdf.Graphics; using System.Drawing; namespace FindAndHighlightText2 { class Program { static void Main(string[] args) { //加載PDF測試文檔 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile("咖啡豆.pdf", FileFormat.PDF); //指定須要查找的頁面區域範圍 RectangleF pagerec = new RectangleF(0, 0, 500, 700); //在第一頁的指定區域查找指定文本 PdfTextFindCollection findCollection1 = pdf.Pages[0].FindText(pagerec, "咖啡豆", TextFindParameter.WholeWord); PdfTextFindCollection findCollection2 = pdf.Pages[0].FindText(pagerec, "洪都拉斯", TextFindParameter.WholeWord); //替換查找結果 PdfBrush brush = new PdfSolidBrush(Color.Red); PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 12f, FontStyle.Regular)); RectangleF textrec; foreach (PdfTextFind find1 in findCollection1.Finds) { textrec = find1.Bounds; pdf.Pages[0].Canvas.DrawRectangle(PdfBrushes.White, textrec); pdf.Pages[0].Canvas.DrawString("NewText", font, brush, textrec); } //高亮查找結果 foreach (PdfTextFind find2 in findCollection2.Finds) { find2.ApplyHighLight(Color.Yellow); } //保存文檔 pdf.SaveToFile("result.pdf", FileFormat.PDF); System.Diagnostics.Process.Start("result.pdf"); } } }
查找替換及高亮結果如圖效果:orm
Vb.net代碼htm
Imports Spire.Pdf Imports Spire.Pdf.General.Find Imports Spire.Pdf.Graphics Imports System.Drawing Namespace FindAndHighlightText2 Class Program Private Shared Sub Main(args As String()) '加載PDF測試文檔 Dim pdf As New PdfDocument() pdf.LoadFromFile("咖啡豆.pdf", FileFormat.PDF) '指定須要查找的頁面區域範圍 Dim pagerec As New RectangleF(0, 0, 500, 700) '在第一頁的指定區域查找指定文本 Dim findCollection1 As PdfTextFindCollection = pdf.Pages(0).FindText(pagerec, "咖啡豆", TextFindParameter.WholeWord) Dim findCollection2 As PdfTextFindCollection = pdf.Pages(0).FindText(pagerec, "洪都拉斯", TextFindParameter.WholeWord) '替換查找結果 Dim brush As PdfBrush = New PdfSolidBrush(Color.Red) Dim font As New PdfTrueTypeFont(New Font("Arial", 12F, FontStyle.Regular)) Dim textrec As RectangleF For Each find1 As PdfTextFind In findCollection1.Finds textrec = find1.Bounds pdf.Pages(0).Canvas.DrawRectangle(PdfBrushes.White, textrec) pdf.Pages(0).Canvas.DrawString("NewText", font, brush, textrec) Next '高亮查找結果 For Each find2 As PdfTextFind In findCollection2.Finds find2.ApplyHighLight(Color.Yellow) Next '保存文檔 pdf.SaveToFile("result.pdf", FileFormat.PDF) System.Diagnostics.Process.Start("result.pdf") End Sub End Class End Namespace