javascript - 在给定开始和结束索引的情况下突出显示 Google Doc(画布渲染)上的文本
问题描述
我正在开发一个适用于 Google Docs 的 chrome 扩展。
Google Doc 上的每个字符都与一个索引相关联(从 0 开始)。
我需要能够突出显示 Google Doc 上的文本 - 给定开始索引和结束索引。例如 - 开始:10,结束:25 - 突出显示索引 10 到 25 中的文本。
谷歌目前正在使用基于 HTML 的渲染 - 并为此实施了解决方案。每个 div、span 标签都被解析了——我能够构建索引和 DOM 节点的映射——我用来突出显示特定的 DOM 节点。
现在,谷歌正在转向基于 Canvas 的渲染。整个可编辑的“页面”是一个元素。 https://workspaceupdates.googleblog.com/2021/05/Google-Docs-Canvas-Based-Rendering-Update.html
我想为画布呈现的 Google Doc 实现相同的功能。
尝试的方法:
- 我可以获得 CanvasRenderingContext 的句柄 - 并在画布上绘制“矩形”。这需要非常准确的 x、y、高度和宽度信息。我无法准确计算 x、y、高度和宽度——因为这依赖于太多因素,如线宽、字体大小等。
有没有更好的方法来解决这个问题/或解决这个问题?非常感谢任何帮助或输入,谢谢。
注意:我知道 Google 提供 App Script 服务和 Google docs update API,使用它们我基本上可以实现这一点。但这会在 Google 文档上创建“修订”,这对用户来说是不可接受的。
解决方案
推荐阅读
- node.js - 如何在nodejs中列出子进程
- javascript - 如何在 HTML 的 for 循环中将不同的 Datepicker 数据分配给不同的行?
- ios - 如何在 Swift4 中访问 JSON 响应中的特定数据
- html - MVC 表单:在相同的垂直对齐上将 Actionlink 和按钮彼此相邻对齐
- tomcat - grails run-app 启动应用程序,但在 tomcat 中部署战争时应用程序未运行
- php - 处理 spatie 异步错误处理
- c# - default(interface) 会返回什么?
- ios - 当应用程序在后台时播放音频
- python - 在 dtype 上失败的 python 中合并 dask 数据帧,如何更改?
- git - Git Stash 的新分支会影响其他存储吗?