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

Adobe PDF中JavaScript实现跳转后指定文本红色高亮技术求助

解决PDF跳转后高亮指定文本的问题

我来帮你搞定这个PDF里点击跳转后高亮目标文本的需求!你的原代码只是临时选中了文本,但没有添加持久的高亮注释,所以看不到预期的红色高亮效果。咱们来修改代码,用Acrobat JS的注释API来实现真正的高亮。

问题分析

原代码的selectPageNthWord只是临时选中文本,切换页面后就会消失,而且逻辑里的nWait == "0"是字符串和数字的比较,容易出问题。我们需要用添加Highlight注释的方式来实现持久的红色高亮。

修改后的完整代码

// 配置参数:目标页面、要查找的文本、要高亮的第N个匹配项(从0开始计数)
var targetPage = 85;
var targetWord = "120";
var targetMatchIndex = 0; // 0表示第一个匹配项,1表示第二个,以此类推

var nWait = 0;
var nWords = getPageNumWords(targetPage);

for (var loop = 0; loop < nWords; loop++) {
    var word = getPageNthWord(targetPage, loop);
    if (word === targetWord) {
        if (nWait === targetMatchIndex) {
            // 获取单词的矩形坐标
            var wordRect = getPageNthWordRect(targetPage, loop);
            // 创建高亮注释
            this.addAnnot({
                page: targetPage,
                type: "Highlight",
                rect: wordRect,
                strokeColor: color.red, // 高亮边框颜色(可选)
                fillColor: color.red,   // 高亮填充颜色,设置为红色
                opacity: 0.3            // 高亮透明度,避免遮挡文本
            });
            // 跳转到该页面并居中显示高亮区域
            this.goToPage(targetPage);
            this.setPageView({page: targetPage, rect: wordRect});
            break;
        }
        nWait++;
    }
}

关键修改点说明

  • 替换目标文本:把targetWord设为你需要查找的"120",不用再硬编码字符串。
  • 修正匹配计数逻辑:用targetMatchIndex指定要高亮的第几个匹配项,nWait作为计数器,用数字比较nWait === targetMatchIndex,避免类型错误。
  • 添加高亮注释:通过addAnnot创建Highlight类型的注释,设置红色填充色和合适的透明度,这样既醒目又不会完全遮挡文本。
  • 定位到高亮区域:添加goToPage和setPageView,确保跳转后页面自动居中显示高亮的文本,方便用户快速定位。

使用注意事项

  1. 如果你需要处理页面内多个相同文本的场景,只需要修改targetMatchIndex的值:比如要高亮第3个"120",就把它设为2(因为从0开始计数)。
  2. 确保你的PDF文档允许添加注释(部分受保护的文档可能禁止此操作)。
  3. 代码可以直接复制到Adobe Acrobat的「运行JavaScript动作」中执行。

内容的提问来源于stack exchange,提问作者Anita Dugan-Moore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 06:27:29