如何通过Office JS API获取Word活动文档信息/文本及当前页面
在Word JS插件中获取屏幕可见的活动文档信息、文本及当前页面的方法
一、通过Word JS API实现需求
1. 获取活动文档基础信息
直接调用Word.Document对象即可获取文档标题、存储路径等核心信息:
await Word.run(async (context) => { const doc = context.document; doc.load("title, path"); await context.sync(); console.log(`文档标题:${doc.title},存储路径:${doc.path}`); });
2. 获取屏幕可见区域的文本
Word JS API没有直接提供“获取屏幕可见文本”的原生方法,但可以通过视图信息结合范围筛选间接实现:
- 先获取当前窗口的滚动位置和视图类型,再结合文档段落的位置计算可见内容
- 简化方案:若无需极致精准,可获取当前光标/选中区域附近的文本(多数场景下能覆盖可见范围):
await Word.run(async (context) => { const selection = context.document.getSelection(); selection.load("text, parentParagraph"); await context.sync(); // 获取当前段落及前后各2段的文本(模拟可见区域) const currentPara = selection.parentParagraph; const prevPara = currentPara.getPrevious(); const nextPara = currentPara.getNext(); [prevPara, currentPara, nextPara].forEach(para => para.load("text")); await context.sync(); console.log("可见区域附近文本:", `${prevPara?.text || ""}\n${currentPara.text}\n${nextPara?.text || ""}`); });
3. 获取当前活动页面
利用Range.getPageNumber()方法可以直接获取当前光标/选中区域所在的页面:
await Word.run(async (context) => { const selection = context.document.getSelection(); const pageNum = selection.getPageNumber(); await context.sync(); console.log("当前活动页面:", pageNum.value); });
如果需要获取当前视图显示的所有页面范围,可结合activeWindow的滚动信息进一步计算,但需要注意不同视图类型(如页面视图、大纲视图)的兼容性。
二、其他可行思路
- 若允许用户配合,可引导用户选中屏幕可见区域,直接通过
getSelection()获取选中文本,这种方式简单且精准 - 无法通过DOM操作直接访问Word主窗口内容(插件任务窗格与Word主进程隔离),因此该路径不可行
内容的提问来源于stack exchange,提问作者Soham Nale
相关产品推荐
相关产品推荐

