我想先跳转到指定页 在当前页然后使用Search方法进行文本的选中 应该怎么实现呀 谢谢
您好,
先跟您确认一下需求——您是想通过代码(宏/插件)先跳转到指定页,然后在该页选中某段文本,对吗?
如果是的话,可以按以下顺序实现:
js
let doc = Api.GetDocument();
doc.GoToPage(2); // 跳转到指定页
let ranges = doc.Search("目标文本");
if (ranges.length > 0) ranges[0].Select(); // 选中文本
相关方法:
- ApiDocument | ONLYOFFICE (GoToPage, Search)
- ApiRange | ONLYOFFICE (Select)
请确认是否符合您的使用场景。
doc.Search(“目标文本”)中的doc是整篇文档查找的嘛 如何在指定章节查找指定文本呢
是的,doc.Search() 是对整篇文档进行查找的。
方便说明一下您所指的"章节"具体是什么吗?例如是按页、按 Word 的节(Section),还是按标题划分的内容?
按页、按 Word 的节(Section),还是按标题划分的内容 查找的方法分别应该怎么实现呢
您好,
目前没有直接在指定页、节或标题范围内查找的方法——Search() 总是对整篇文档进行查找。这三种情况的思路是一样的:先查找整篇文档,再对返回的结果进行过滤。
js
(function() {
let doc = Api.GetDocument();
let ranges = doc.Search("目标文本");
// 1. 按页过滤(页码从 0 开始:第 1 页 → 0,第 2 页 → 1,……)
let onPage = ranges.filter(r => r.GetStartPage() === 1);
// 2. 按节过滤(通过 GetPrevious 计算节的索引)
function sectionIndex(sec) {
let i = 0, s = sec.GetPrevious();
while (s) { i++; s = s.GetPrevious(); }
return i;
}
let inSection = ranges.filter(r =>
sectionIndex(r.GetParagraph(0).GetSection()) === 1
);
// 3. 在两个标题之间查找
let headings = doc.GetAllHeadingParagraphs();
let startPos = headings[0].GetPosInParent();
let endPos = headings[1].GetPosInParent();
let inChapter = ranges.filter(r => {
let p = r.GetParagraph(0).GetPosInParent();
return p > startPos && p < endPos;
});
if (onPage.length > 0) onPage[0].Select();
})();
相关文档: