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

如何通过JavaScript API为Adobe Acrobat选中文本添加高亮注释?缺失quads获取方法

解决Acrobat JS获取选中文本Quads添加高亮注释的问题

我来帮你搞定这个问题!在Adobe Acrobat的JavaScript API里,要给选中的文本加高亮注释,关键就是拿到选中区域的quads数据——你可以通过文档的选择范围对象来获取,下面是具体的实现思路和完整代码:

核心步骤说明

  • 首先确认用户已经选中了文本,避免空操作
  • 通过this.getSelection()获取选中的文本范围集合(可能有多段选中的内容)
  • 遍历每个范围,从中提取对应的页码和quads坐标数组
  • 用这些数据创建高亮注释

完整实现代码

// 先检查是否有文本被选中
if (this.getSelectedText("text") === "") {
    app.alert("请先选中要高亮的文本哦!");
} else {
    // 获取所有选中的文本范围
    var selectionRanges = this.getSelection();
    
    // 遍历每一段选中的文本
    for (var i = 0; i < selectionRanges.length; i++) {
        var currentRange = selectionRanges[i];
        // 获取当前范围所在的页码(Acrobat页码从0开始)
        var targetPage = currentRange.getPageNums()[0];
        // 获取当前文本范围的quads坐标数组
        var textQuads = currentRange.getQuads();
        
        // 创建高亮注释
        var highlightAnnot = this.addAnnot({
            page: targetPage,
            type: "Highlight",
            quads: textQuads,
            // 自定义高亮颜色,这里用黄色,你也可以换成其他颜色比如color.red
            color: color.yellow
        });
        
        // 确保注释渲染到页面上
        highlightAnnot.draw();
    }
}

关键细节解释

  • this.getSelection()返回的是Range对象数组,每个Range对应一段连续选中的文本(哪怕跨多行也会是一个Range,但跨页会分成多个Range)
  • range.getQuads()返回的是一组四边形坐标,每个四边形由8个数值组成(x1,y1,x2,y2,x3,y3,x4,y4),对应文本区域四个顶点的坐标,Acrobat会用这些四边形精准覆盖你选中的文本
  • 页码参数page是从0开始计数的,和getPageNums()返回的数值一致,不用额外转换

注意事项

  • 如果用户选中了跨页的文本,代码会自动为每一页的选中内容创建单独的高亮注释
  • 你可以根据需求调整高亮的颜色、透明度等属性,比如添加opacity: 0.5来让高亮更柔和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:48:48