程序地带

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

 


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Yesi/p/14251320.html

随机推荐

全局 水印

  1.添加配置/vendor/device/ generic/config/prop/local.proppersist.sys.watermark=true/vendor/device/ ...

空白的泡 阅读(911)

快商通智能客服获CTI论坛“2020年度编辑推荐奖”

12月18日,由国内计算机和通信领域里的的头部媒体【CTI论坛】主办的“2020年度编辑推荐奖暨行业应用及市场分析主题沙龙”在北京成功召开。依托CTI论坛多年来积累的强大行业资源和经验&...

快商通AI 阅读(540)

Spark Sql实战详解

SparkSQLSparkSQL是构建在SparkRDD之上的一款ETL(ExtractTransformationLoad)工具,这类似于构建在MapRed...

包包包包大人 阅读(455)

堆排序(C语言简单实现)

堆排序(C语言简单实现)堆排序是对简单选择排序的升级版,简单选择排序链接。堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆...

DFGOMC 阅读(964)

Anaconda环境配置

1、pycharm中使用Anaconda作为虚拟环境1、问题描述  在使用Pycharm的时候,我同学就给我推荐再加上Anaconda包管理软件,并给了我下面这个两个网址&...

[email protected]~200830 阅读(165)