-
C# 查找PDF页面指定区域中的文本并替换和高亮
对PDF文档中的内容进行查找时,可针对文档全篇内容获取查找结果,也可在PDF指定页面中的特定范围内(矩形框区域)进行查找,对获取的查找结果可执行文本高亮或替换等操作,本文将对此作相关介绍(附VB.NET代码,有需要可参考)。
关于工具使用
工具:需下载Spire.PDF for .NET Pack hotfix 6.12.20版本(注:hotfixt版本无需安装,若下载的是Pack版本则需要安装至本地路径,可在安装后,查看演示程序及API)。
引用:下载并解压到本地路径,将Bin文件夹下的Spire.Pdf.dll文件添加引用至VS程序,具体引用方法可参考如下步骤:
在VS程序中打开“解决方案资源管理器”-鼠标右键点击“引用”-“添加引用”-然后执行如下操作:
添加引用结果如图:
C# 代码
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"); } } }
查找替换及高亮结果如图效果:
Vb.net代码
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
文章出处:
https://www.cnblogs.com/Yesi/p/14251320.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数