You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iText 7的PdfSweep除红编外,能否支持正则匹配文本高亮?

iText 7 PdfSweep 实现文本高亮全解析

没问题,我来给你梳理清楚iText 7里PdfSweep做文本高亮的事儿——答案是完全可以,而且它的能力远不止基础的文本标记,完全支持正则匹配文本+自定义高亮样式的需求。

核心能力确认

PdfSweep的highlight()方法确实是专门用来处理文本高亮的,它不仅能实现你提到的“文本红编”(推测是基础的红色标记),还能灵活扩展:

  • 支持通过正则表达式精准匹配目标文本
  • 允许自定义高亮的颜色、透明度、边框等样式

具体实现步骤

1. 用正则匹配定位文本

你可以借助RegexTextSearchStrategy来创建基于正则的文本搜索规则,把需要匹配的正则表达式传入即可,比如匹配手机号、邮箱、特定关键词等都没问题。

2. 自定义高亮样式

通过HighlightOptions对象,你可以完全控制高亮的外观:

  • 颜色:用setHighlightColor()设置任意颜色,比如ColorConstants.YELLOW或者自定义new DeviceRgb(255, 255, 102)
  • 透明度:通过setOpacity()调整高亮层的透明度(0到1之间),避免遮挡原文本
  • 边框:如果需要突出显示区域,还能设置边框颜色、宽度,甚至圆角

3. 示例代码参考

下面是一个实用的代码片段,演示如何用正则匹配所有邮箱地址,并用黄色半透明效果高亮:

// 初始化PDF文档
PdfDocument pdfDoc = new PdfDocument(new PdfReader("input.pdf"), new PdfWriter("output.pdf"));

// 创建正则搜索策略:匹配标准邮箱格式
TextSearchStrategy regexStrategy = new RegexTextSearchStrategy("\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b");

// 自定义高亮选项:黄色半透明
HighlightOptions highlightOpts = new HighlightOptions()
    .setHighlightColor(ColorConstants.YELLOW)
    .setOpacity(0.3f);

// 执行高亮操作
PdfSweep pdfSweep = new PdfSweep();
pdfSweep.highlight(pdfDoc, regexStrategy, highlightOpts);

// 关闭文档
pdfDoc.close();

额外提示

虽然官方文档对这个方法的描述比较简洁,但从API设计和实际测试来看,PdfSweep的highlight()灵活性很高。如果有特殊的匹配需求(比如匹配跨页文本、特定位置的文本),还可以自定义TextSearchStrategy的实现类,进一步扩展功能。

内容的提问来源于stack exchange,提问作者David Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:37:41