如何通过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
相关产品推荐
相关产品推荐

