跳到内容
  • 福昕首页
  • 开发中心
  • SDK文档资料
  • 福昕首页
  • 开发中心
  • SDK文档资料
申请试用
  • 企业自动化
    • Compressor
  • 福昕CloudAPI
  • 福昕PDF SDK 软件开发工具包
    • 福昕PDF SDK(ActiveX)
    • 福昕PDF SDK(桌面/服务器)
    • 福昕PDF SDK(Plug-in)
    • 福昕 PDF SDK(安卓)
    • 福昕PDF SDK(iOS)
    • 福昕PDF SDK(Web)
  • 福昕管理控制台
    • 公有云
    • 私有云
    • 通用情况
  • 福昕阅读器
    • RMS插件
  • 福昕高级编辑器
    • AI助手
    • Mac版本
      • 常规问题
    • windows版本
      • ECM集成
      • 互联PDF
      • 企业管理指南
      • 保护
      • 内容编辑
      • 创建PDF
      • 压缩
      • 图章
      • 安装与卸载
      • 常见问题
      • 打印
      • 注释/评论
      • 福昕插件
      • 翻译助手
      • 翻译助手教程
      • 试用与激活
      • 转换
      • 页面管理
    • 教育用户
      • 论文查重
      • 论文畅
      • 操作指南
    • 网页版
      • 电子签章
    • 订阅
    • 资源
  • 福昕高级编辑器Linux版本
  • 福船图纸管理系统
  • 福昕PDF SDK 软件开发工具包 > 福昕PDF SDK(Web)
  • 标签:
  • 替换文本,监听,监听注释

如何实现一键替换或删除指定的文本内容?

  • 福昕知识库
  • 2025-09-28

应用场景

在线预览的PDF中,存在各种类型的内容标记(高亮或下划线等类型的注释数据),应用层想要实现这样的效果:当用户点击某种类型的注释时(如:高亮类型的注释),弹出自定义的工具栏,给出修改建议,同时提供一键替换或删除注释所标记的文本内容(关键字)的功能。

解决方案

第一步,监听注释的点击事件,获取选中的注释对象

var selectedAnnot, annotRect, thePage, targetObj;

pdfui.eventEmitter.on(PDFViewCtrl.constants.ViewerEvents.tapAnnotation, function(annotRender) {
    //获取选中的注释对象
    selectedAnnot = annotRender.getAnnot();
     //获取该注释对象的坐标值(矩形区域)
    annotRect = selectedAnnot.getRect();
     //获取该注释对象所属的页面对象
    thePage = selectedAnnot.getPage();
});

第二步,获取注释位置对应的文本对象

var objInfo = {
    rect: annotRect,
    tolerance: 0,
    type: PDFViewCtrl.PDF.constant.Graphics_ObjectType.Text,
    isInRect: false
};
 //获取注释位置对应的文本类型的图形对象,输出是一个对象数组
thePage.getGraphicsObjectsByRect(objInfo).then(objs => {
    //注释区域可能存在多个对象的情况,需要进行判断
    console.log(objs, objs.length);
    if (objs.length === 0) return console.log("Here has not any obj.");
    if (objs.length != 1) {
        return console.log("由于文档来源不确定,注释区域存在多个对象的情况暂不考虑,需根据文档内容不断优化程序。");
        // 循环获取objs中的数据
        // objs.forEach(function (obj, index) {
        //     console.log(`索引编号:${index},内容:${obj.getText()}`);
        // })
    } else {
        targetObj = {
            text_obj: objs[0],
            fontSize: objs[0].getFontSize()
        };
        console.log(`该区域对应的文本对象的内容为:${targetObj.text_obj.info.textState.text}`);
    }
})

第三步,将获取到的文本对象中目标关键字替换为指定的文本内容

let text_obj = targetObj.text_obj;
let keyWord = "KEYWORD";
let replacement = "NEW_CONTENT";

let info = {};
info.type = PDFViewCtrl.PDF.constant.Graphics_ObjectType.Text;
info.originPosition = text_obj.info.textState.position;
info.charspace = text_obj.info.textState.charSpace;
info.wordspace = text_obj.info.textState.wordSpace;
info.textmatrix = text_obj.info.textState.matrix;
info.font = text_obj.info.textState.font;
info.matrix = [text_obj.info.matrix.a, text_obj.info.matrix.b, text_obj.info.matrix.c, text_obj.info.matrix.d, text_obj.info.matrix.e, text_obj.info.matrix.f];
info.text = text_obj.info.textState.text.replace(keyWord, replacement);
info.fillColor = text_obj.getFillColor();

// 删除掉选中的这个文本对象
await selectedAnnot.page.removeGraphicsObject(text_obj);
// 添加上一个新的文本对象
await selectedAnnot.page.addGraphicsObject(info).then(function (new_text_obj) {
    new_text_obj.setFontSize(targetObj.fontSize);
});

PS:变量replacement置空时即为“删除指定文本内容”的操作

第四步,移除选中的注释对象

thePage.removeAnnotByObjectNumber(selectedAnnot.info.objectNumber);

相关内容

云文档列表右键菜单与程序语言不一致

如何重复使用区域高亮的功能

如何在页面中总是显示文档页面大小

如何实现总是在新窗口中打开文件

如何实现PDF批量转换为word

如何设置编辑器默认启动界面

复制标注粘贴到另一文档后方向变化

在PDF文档上添加图片章打印不显示图章

虚拟打印时如何保持原始文档的页面方向混排模式

如何给PDF文档自动创建书签

推荐内容

云文档列表右键菜单与程序语言不一致

如何重复使用区域高亮的功能

如何在页面中总是显示文档页面大小

如何实现总是在新窗口中打开文件

如何实现PDF批量转换为word

如何设置编辑器默认启动界面

复制标注粘贴到另一文档后方向变化

在PDF文档上添加图片章打印不显示图章

虚拟打印时如何保持原始文档的页面方向混排模式

如何给PDF文档自动创建书签

产品
  • 应用行业
  • 白皮书
开发支持
  • 开发中心
  • SDK文档资料

销售咨询:010-50951668

客服电话:0591-38509808

销售咨询
微信公众号

©2025 福建福昕软件开发股份有限公司 版权所有

隐私策略