PDF处理控件Aspose.PDF功能演示:使用C#查找和替换PDF文件中的文本

使用“查找并替换”选项可以一次性替换文档中的特定文本。这样,您不必手动定位和更新整个文档中每次出现的文本。本文甚至更进一步,介绍了如何在PDF文档中自动查找和替换文本功能。特别是,将学习如何使用C#在整个PDF,特定页面或页面区域中查找和替换文本。

  • 使用C#查找和替换PDF中的文本
  • 查找和替换特定页面中的文本
  • 定义PDF页面区域以查找和替换文本
  • 使用正则表达式查找和替换PDF中的文本

.NET的Aspose.PDF是一个C#类库,为.NET应用程序提供基本以及高级的PDF操作功能。该API还允许您以不同的方式无缝地查找和替换PDF文档中的文本。

点击下载最新版Aspose.PDFicon-default.png?t=N7T8https://www.evget.com/product/565/download


使用C#查找和替换PDF中的文本

以下是在PDF文档中查找和替换文本的步骤。

  • 使用Document类使用其路径加载PDF文档。
  • 创建TextFragmentAbsorber类的实例,并将搜索短语提供给其构造函数。
  • 使用Document.Pages.Accept(TextFragmentAbsorber)接受PDF所有页面的文本吸收器。
  • 将提取的文本片段获取到TextFragmentCollection对象中。
  • 遍历找到的TextFragmentCollection并替换每个片段中的文本。
  • 使用Document.Save(String)方法保存更新的PDF文档。

下面的代码示例演示如何使用C#查找和替换PDF中的文本。

// Open document
Document pdfDocument = new Document("Document.pdf");

// Create TextAbsorber object to find all instances of the input search phrase
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("text");

// Accept the absorber for all the pages
pdfDocument.Pages.Accept(textFragmentAbsorber);

// Get the extracted text fragments
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

// Loop through the fragments
foreach (TextFragment textFragment in textFragmentCollection)
{
    // Update text and other properties
    textFragment.Text = "TEXT";
    textFragment.TextState.Font = FontRepository.FindFont("Verdana");
    textFragment.TextState.FontSize = 22;
    textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
    textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}
            
// Save resulting PDF document.
pdfDocument.Save("updated-document.pdf");

使用C#查找和替换特定页面中的文本

以下是在PDF文档的特定页面上查找和替换文本的步骤。

  • 使用Document类使用其路径加载PDF文档。
  • 创建TextFragmentAbsorber类的实例,并将搜索短语提供给其构造函数。
  • 使用Document.Pages [1] .Accept(TextFragmentAbsorber)接受所需页面的文本吸收器。
  • 遍历找到的TextFragmentAbsorber.TextFragments集合,并替换每个片段中的文本。
  • 使用Document.Save(String)方法保存更新的PDF文档。

以下代码示例显示了如何使用C#在PDF的特定页面中查找和替换文本。

// Open document
Document pdfDocument = new Document("Document.pdf");

// Create TextAbsorber object to find all instances of the input search phrase
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("text");

// Accept the absorber for desired
pdfDocument.Pages[1].Accept(textFragmentAbsorber);

// Get the extracted text fragments
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

// Loop through the fragments
foreach (TextFragment textFragment in textFragmentCollection)
{
    // Update text and other properties
    textFragment.Text = "TEXT";
    textFragment.TextState.Font = FontRepository.FindFont("Verdana");
    textFragment.TextState.FontSize = 22;
    textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
    textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}

// Save resulting PDF document.
pdfDocument.Save("updated-document.pdf");

定义页面区域以查找和替换文本

还可以在PDF文档的页面特定区域中查找和替换文本。以下步骤显示了如何定义特定区域,然后替换其中的文本。

  • 使用Document类使用其路径加载PDF文档。
  • 创建TextFragmentAbsorber类的实例,并将搜索短语提供给其构造函数。
  • 使用Document.Pages [0] .Accept(TextFragmentAbsorber)接受所需页面的文本吸收器。
  • 使用Rectangle类定义页面区域。
  • 循环遍历TextFragmentAbsorber.TextFragments集合,并替换每个片段中的文本。
  • 使用Document.Save(String)方法保存更新的PDF文档。

下面的代码示例演示如何使用C#在PDF的特定页面区域中查找和替换文本。

// load PDF file
Document pdf = new Document("Document.pdf");

// instantiate TextFragment Absorber object
TextFragmentAbsorber TextFragmentAbsorberAddress = new TextFragmentAbsorber();

// search text within page bound
TextFragmentAbsorberAddress.TextSearchOptions.LimitToPageBounds = true;

// specify the page region for TextSearch Options
TextFragmentAbsorberAddress.TextSearchOptions.Rectangle = new Rectangle(100, 100, 200, 200);

// search text from first page of PDF file
pdf.Pages[1].Accept(TextFragmentAbsorberAddress);

// iterate through individual TextFragment
foreach (TextFragment tf in TextFragmentAbsorberAddress.TextFragments)
{
    // update text to blank characters
    tf.Text = "";
}

// save updated PDF file after text replace
pdf.Save("output.pdf");

使用正则表达式查找和替换PDF中的文本

也可以使用正则表达式来查找和替换与特定模式匹配的文本。为此,您只需要提供一个正则表达式即可代替普通搜索短语并使用TextSearchOptions。以下是执行此操作的步骤。

  • 使用Document类使用其路径加载PDF文档。
  • 创建TextFragmentAbsorber类的实例,并将搜索短语提供给其构造函数。
  • 创建TextSearchOptions类的实例,然后将true传递给其构造函数以启用基于正则表达式的搜索。
  • 分配TextSearchOptions对象TextFragmentAbsorber.TextSearchOptions财产。
  • 使用Document.Pages [0] .Accept(TextFragmentAbsorber)接受所需页面的文本吸收器。
  • 使用Rectangle类定义页面区域。
  • 循环遍历TextFragmentAbsorber.TextFragments集合,并替换每个片段中的文本。
  • 使用Document.Save(String)方法保存更新的PDF文档。

下面的代码示例演示如何使用C#使用正则表达式查找和替换PDF中的文本。

// Open document
Document pdfDocument = new Document("Document.pdf");

// Create TextAbsorber object to find all the phrases matching the regular expression
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // Like 1999-2000

// Set text search option to specify regular expression usage
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;

// Accept the absorber for a single page
pdfDocument.Pages[1].Accept(textFragmentAbsorber);

// Get the extracted text fragments
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;

// Loop through the fragments
foreach (TextFragment textFragment in textFragmentCollection)
{
    // Update text and other properties
    textFragment.Text = "New Phrase";
    // Set to an instance of an object.
    textFragment.TextState.Font = FontRepository.FindFont("Verdana");
    textFragment.TextState.FontSize = 22;
    textFragment.TextState.ForegroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Blue);
    textFragment.TextState.BackgroundColor = Aspose.Pdf.Color.FromRgb(System.Drawing.Color.Green);
}

// Save PDF
pdfDocument.Save("output.pdf");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/152176.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外汇天眼:失败的投资者经常陷入两个误区!

一、价格与价值的混淆 在金融领域,价格和价值往往被错误视为同义词。然而,审视市场时,我们会逐渐发现一个“安全差”的重要概念,这是由巴菲特的导师本杰明格雷厄姆提出的。 安全差是指股票的内在价值与市场价格之间的差异。内在…

WMS仓储管理系统与TMS系统整合后的优势

随着全球化的加速和供应链网络的日益复杂,仓库和运输成为企业运营中的两个关键环节。为了更高效地管理这两个环节,许多企业开始探索将WMS仓储管理系统和TMS运输管理系统整合的可能性。这种整合不仅可以提升仓库流程的可见性,还有助于改善调度…

1、24 个常见的 Docker 疑难杂症处理技巧(一)

1Docker 迁移存储目录 默认情况系统会将 Docker 容器存放在 /var/lib/docker 目录下 [问题起因] 今天通过监控系统,发现公司其中一台服务器的磁盘快慢,随即上去看了下,发现 /var/lib/docker 这个目录特别大。由上述原因,我们都知…

配置 ssh 免密登录

背景 从机器 A 使用 ssh 免密登录到机器 B,两台机器的 OS 都是 CentOS。其中机器 B 用作了一台 nodejs 的服务器,已经安装并运行了 sshd 服务,其用户名是 jmmem 我们想要实现在机器 A 上键入 ssh nodejs 就能免密登录到机器 B 的效果 机器…

python 最快多长时间学完?

以下是一个为零基础学员制作Python速成学习计划。这个计划包括了一些基本的Python概念和技能,以及一些实用的学习技巧。 第1周:基础入门 Python简介:了解Python的历史、特点、应用领域。 安装Python:在你的电脑上安装Python&am…

一个 不用充钱 也能让你变强的 VSCode 插件

今天给大家推荐一款不用充钱也能让你变强的 vscode 插件 通义灵码(TONGYI Lingma),可以称之为 copilot 的替代甜品 💪 什么是 通义灵码(TONGYI Lingma) 通义灵码(TONGYI Lingma)&am…

Martins 用法-利用现有的数学公式来绘制三相电机电流相位之间的关系

你可能会对这个主题很感兴趣。这背后的原因是我想分享一种我在花了大量时间研究诊断三相电机的方式时发现到的技术。我发现有一种非常简单的方式可以做到这一点,与Pico团队分享后,Steve Smith将它命名为Martins用法。 那么,让我们开始吧。 Ma…

Pinia 及其数据持久化 Vue新一代状态管理插件

黑马前端Vue新一代状态管理插件Pinia快速入门视频教程 Pinia主页 超级简单,不需要耐心 pinia :新一代的VueX 1. 安装 npm install pinia2. 在main.js中引入 import { createPinia } from pinia app.use(createPinia())3. 新建stores目录&#xff0c…

Camtasia2024喀秋莎微课制作神器新版本功能介绍

最近无论是b站,抖音,快手等视频软件中都有不少微课视频、电视剧解说横空出世,通过这些“热度”带来的收益也是无法估量的,很多自媒体博主月入上万惹人羡慕。 不少朋友也想在这股短视频洪流中分一碗羹,但又苦于技术跟不…

areadetector ADURL模块应用在面探测控制的初步应用

本章中讨论了使用ADURL控制面探测器Lambda的过程&#xff1a; ADURL的使用请见&#xff1a; EPICS -- areaDetector URL驱动程序-CSDN博客 需要启动一个ADURL的IOC程序&#xff0c;并且设置相关的插件中参数的值&#xff1a; # st.cm < envPaths < st_base.cmddbpf 1…

mysql操作 sql语句中的完整性约束有哪些,主键约束、外键约束、引用完整性约束,主键外键、唯一性

什么是约束&#xff1a;约束&#xff1a;就是约定哪些东西能填、怎么填&#xff1f;哪些东西不能填&#xff1f; 文章目录 前言&#xff1a;建表正文一、实体完整性约束1. 主键约束2. 唯一性约束3. 自增长约束4. 联合主键约束 二、域完整性约束三、引用完整性约束1. 外键约束 讲…

【kerberos】使用 curl 访问受 Kerberos HTTP SPNEGO 保护的 URL

前言&#xff1a; 大数据集群集成 Kerberos 后&#xff0c;很多 WEBUI 打开都会提示输入用户名和密码。由于我想获取 flink 任务的详情&#xff0c;且KNOX 并不支持Flink api&#xff0c;查看KNOX 直接的列表&#xff1a;https://docs.cloudera.com/cdp-private-cloud-base/7.…

算法实战:亲自写红黑树之二 完整代码

此文承接&#xff1a;算法实战&#xff1a;亲自写红黑树之一-CSDN博客 目录 一、项目结构 二、辅助代码a.h 三、红黑树代码rbtree.h 四、测试代码main.cpp 五、运行效果 六、代码详解 一、项目结构 这里给出的代码是实际可以运行的代码。 运行环境&#xff1a;VS2022&am…

波束形成中的主瓣宽度

阵列信号处理相关基础知识及主瓣宽度 导向矢量阵列方向图确知波束形成普通波束形成主瓣宽度确知波束形成主瓣宽度普通波束形成主瓣宽度 在讨论主瓣宽度之前&#xff0c;首先得了解导向矢量、波束形成、阵列方向图的概念&#xff0c;这些是阵列信号处理中最基础的知识。 导向矢量…

编译智能合约以及前端交互工具库(Web3项目一实战之三)

我们已然在上一篇 Web3项目灵魂所在之智能合约编写(Web3项目一实战之二) ,为项目写好了智能合约代码。 但身为开发人员的我们,深知高级编程语言所编写出来的代码,都是需要经过编译,而后外部方能正常调用。很显然,使用solidity这门新的高级编程语言编写出来的智能合约,也…

【机器学习】线性回归算法:原理、公式推导、损失函数、似然函数、梯度下降

1. 概念简述 线性回归是通过一个或多个自变量与因变量之间进行建模的回归分析&#xff0c;其特点为一个或多个称为回归系数的模型参数的线性组合。如下图所示&#xff0c;样本点为历史数据&#xff0c;回归曲线要能最贴切的模拟样本点的趋势&#xff0c;将误差降到最小。 2. 线…

基于旗鱼算法优化概率神经网络PNN的分类预测 - 附代码

基于旗鱼算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于旗鱼算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于旗鱼优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

云表|低代码软件开发“外挂”,新时代的黑科技

随着技术的日新月异&#xff0c;现代企业对于软件开发的需求愈加迫切&#xff0c;传统的软件开发方式已然无法满足快速迭代和创新的需求。在这种背景下&#xff0c;低代码开发平台如破茧而出&#xff0c;应运而生。这种平台通过提供可视化的开发工具和预构建的组件&#xff0c;…

NVIDIA安装

电脑显卡类型 两种方法&#xff1a; 选择对应的版本 产品系列下载Notebooks&#xff0c;这样产品才会出现Laptop的GPU&#xff08;Laptop是代表笔记本&#xff09;。 下载完之后双击安装&#xff0c;更改下载路径后&#xff0c;选择默认的下载即可。 卸载 如果之后要卸载…