如何在PSPDFKit 2022.3.1版本中获取高亮文本?
在PSPDFKit 2022.3.1中通过高亮批注坐标提取对应文本
在PSPDFKit 2022.3.1版本中,你可以利用内置的getTextForRect方法,结合exportInstantJSON返回的高亮批注坐标来提取对应文本,具体步骤如下:
核心思路
- 从
exportInstantJSON的结果中筛选出高亮类型的批注,获取其所在页码和矩形坐标数组。 - 对每个矩形坐标,调用
getTextForRect方法提取该区域内的文本。 - 拼接多个矩形区域的文本,得到完整的高亮内容。
代码示例
// 导出Instant JSON数据 const instantJSON = await instance.exportInstantJSON(); // 筛选出所有高亮批注 const highlightAnnotations = instantJSON.annotations.filter(anno => anno.type === "highlight"); // 批量处理每个高亮批注 highlightAnnotations.forEach(async (highlight) => { const targetPage = highlight.pageIndex; let fullHighlightedText = ""; // 遍历高亮批注的每个矩形区域 for (const rectData of highlight.rects) { // 转换为PSPDFKit要求的Rect对象 const textRect = new PSPDFKit.Rect(rectData.x, rectData.y, rectData.width, rectData.height); // 提取当前矩形内的文本 const segmentText = await instance.getTextForRect(targetPage, textRect); // 拼接文本(可根据实际排版调整分隔符) fullHighlightedText += `${segmentText} `; } // 输出最终的高亮文本,去除末尾多余空格 console.log("提取到的高亮文本:", fullHighlightedText.trim()); });
注意事项
exportInstantJSON返回的矩形坐标符合PDF标准坐标系(原点在页面左下角),无需额外转换,直接传入getTextForRect即可。- 如果高亮区域包含部分字符,
getTextForRect会自动处理,尽可能提取完整的字符,避免截断单个文字。 - 若遇到跨页的高亮批注,只需针对每个页面的矩形区域分别调用方法,再拼接结果即可。
内容的提问来源于stack exchange,提问作者adrianp
相关产品推荐
相关产品推荐

