C# 查找PDF頁面指定區域中的文本並替換和高亮

對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
相關文章
相關標籤/搜索