`

C# 查找PDF页面指定区域中的文本并替换和高亮

阅读更多

对PDF文档中的内容进行查找时,可针对文档全篇内容获取查找结果,也可在PDF指定页面中的特定范围内(矩形框区域)进行查找,对获取的查找结果可执行文本高亮或替换等操作,本文将对此作相关介绍(附VB.NET代码,有需要可参考)。

关于工具使用

工具:需下载Spire.PDF for .NET Pack hotfix 6.12.20版本(注:hotfixt版本无需安装,若下载的是Pack版本则需要安装至本地路径,可在安装后,查看演示程序及API)。

引用:下载并解压到本地路径,将Bin文件夹下的Spire.Pdf.dll文件添加引用至VS程序。

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");
        }
    }
}

 

 

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

 

 

 

0
1
分享到:
评论

相关推荐

    C#编写的文本编辑器

    C#提供了Regex类,可以用于解析和匹配正则表达式模式,实现复杂文本查找和替换。 5. **多线程**:为了提升用户体验,文本编辑器可能使用多线程来实现后台加载大文件或执行耗时操作,避免阻塞主线程导致界面无响应。...

    C# winform 富文本编辑器.rar

    - **查找和替换**:使用`RichTextBox.Find()`方法进行文本查找,`RichTextBox.Replace()`方法进行替换操作。 - **事件处理**:例如,`TextChanged`事件在文本改变时触发,可以在此事件中执行相应的逻辑。 4. **...

    在线文本编辑器 C#

    在这个场景中,C#被用来开发一个在线文本编辑器,提供丰富的功能,包括处理文字、视频和图片,并允许用户自由设定样式和导入格式。 在线文本编辑器的核心功能通常包括: 1. **文本输入与编辑**:用户可以在编辑器...

    C#软件项目开发全程剖析(PDF版)

    书中详细讲述了如何构建高度模块化的应用程序、提供灵活可扩展的用户界面、进行有效的语言国际化及本地化处理、进行高效的文本表示和维护、代码查找和替换功能、构建可重用的控件以及实现语法高亮显示和分析的自动化...

    明日科技C#开发入门及项目实战

    实例086 在richtextbox控件中替换文本文字 实例087 利用richtextbox控件实现文字定位与标示 实例088 将数据表中的字段添加到combobox控件中 实例089 对listbox控件中的数据进行排序 实例090 listbox控件拒绝添加重复...

    C#做的编辑器源代码

    3. **文本处理**: 源代码可能包含了大量处理文本的操作,如读取、写入、查找、替换、剪切、复制和粘贴。这涉及到字符串操作、正则表达式以及对Unicode字符的支持。 4. **事件处理**: C#中的事件驱动编程是编辑器...

    VS2008实现C#记事本源码

    这个项目可能旨在帮助初学者理解如何构建基本的文本编辑器功能,如打开、保存、复制、粘贴、查找和替换等。 【描述】提到这是一个"电子书",这意味着它可能不仅包含源代码,还可能包括相关的教程、解释和示例,以...

    EDITFORM-DLL-SOURCE.zip

    5. **查找和替换**:提供了内置的搜索和替换功能,方便用户快速定位和修改文本。 6. **滚动条**:根据内容自动调整滚动条,确保所有内容都能查看到。 7. **多行文本输入**:与`TextBox`不同,`RichtextBox`支持多行...

    Notepad++记事本编辑器的安装与使用技巧[整理].pdf

    另外,Notepad++支持Regular Expression进行查找和替换,这对于处理大量文本数据或查找特定模式的代码尤为有用。 Notepad++还具有书签功能,通过书签可以快速定位到代码的特定位置,提高代码导航的效率。高亮度显示...

    Visual Studio操作指南.pdf

    - **查找与替换**:高效地查找和替换文本。 - **编码与换行符**:处理不同编码格式的文件。 - **大纲显示**:提供清晰的代码结构视图。 - **代码生成与重构**:自动生成常用代码结构,并提供重构选项以提高代码...

    xml编辑器

    - 搜索和替换:在XML文档中查找和替换特定内容。 - XML格式化:自动整理XML文档的格式,使其符合标准规范。 - 插件扩展:许多XML编辑器支持插件,可以增加更多功能,如XPath查询、XSLT转换等。 6. **XML编辑器...

    如何使用RichEdit50W进行语法高亮显示的想法

    在实际开发过程中,我们还需要考虑其他功能,如自动完成、代码折叠、查找替换等。这些功能的实现同样需要与RichEdit50W交互,发送适当的控制消息,或者使用额外的库来辅助处理。 在提供的"An-Idea-How-to-Use-Rich...

    Peter-程序员广泛的文本编辑器

    《Peter程序员广泛的文本编辑器》是一款专为编程人员设计的强大文本...通过安装提供的"Peter-Programmers-Extensive-Text-Editor.pdf"文档和"下载链接.txt"中的资源,用户可以深入了解并开始使用这款强大的文本编辑器。

    使用ICSharpCode.TextEditor

    在本文中,我们将深入探讨如何在C# WinForms应用程序中集成并使用`ICSharpCode.TextEditor`,这是一个强大的文本编辑控件,能够提供语法高亮显示,极大地提升了代码编辑体验。`ICSharpCode.TextEditor`是.NET框架下...

    增强的字符串处理

    在"Enhanced-String-Handling.pdf"文档中,可能详细介绍了这些概念,并提供了示例代码和最佳实践。如果想要深入学习,可以下载名为"LogOn.aspx?rp=%2FKB%2Fstring%2FEnhancedStringHandling%2FEnahcedStringEvaluate...

Global site tag (gtag.js) - Google Analytics