获取文档大纲内容
场景说明
获取文档的大纲结构,可以实现文档目录导航、章节提取等功能。大纲条目通常对应文档中设置了大纲级别的段落(如标题)。
适用场景:
- 文档目录提取
- 章节导航
- 文档结构分析
- 快速定位到指定章节
相关 API 文档
示例代码
获取所有大纲条目数量
async function getOutlineCount() {
// 获取文档中的大纲条目数量
const count = await Application.ActiveDocument.OutlineEntries.count;
console.log('大纲条目数量:', count);
return count;
}
获取大纲条目的文本内容
async function getOutlineText() {
// 获取第一个大纲条目
const outlineEntry = await Application.ActiveDocument.OutlineEntries.item(1);
// 获取大纲条目显示的文本
const text = await outlineEntry.getText();
console.log('大纲条目文本:', text);
return text;
}
获取所有大纲条目的内容
async function getAllOutlineEntries() {
const count = await Application.ActiveDocument.OutlineEntries.count;
const outlines = [];
for (let i = 1; i <= count; i++) {
const outlineEntry = await Application.ActiveDocument.OutlineEntries.item(i);
const text = await outlineEntry.getText();
const level = await outlineEntry.level;
outlines.push({
index: i,
text: text,
level: level
});
}
console.log('所有大纲条目:', outlines);
return outlines;
}
获取大纲条目的级别
async function getOutlineLevel() {
const outlineEntry = await Application.ActiveDocument.OutlineEntries.item(1);
// 获取大纲级别(Word.WdOutlineLevel)
const level = await outlineEntry.level;
console.log('大纲级别:', level);
return level;
}
定位到大纲条目位置
async function focusOutlineEntry() {
// 获取指定大纲条目
const outlineEntry = await Application.ActiveDocument.OutlineEntries.item(1);
// 定位到大纲条目对应的文档段落区域
const success = await outlineEntry.focus();
console.log('定位成功:', success);
}
定位到大纲区域
async function focusOutlineRange() {
// 获取大纲条目
const outlineEntry = await Application.ActiveDocument.OutlineEntries.item(1);
// 定位到大纲区域(从当前大纲段落到下一个同级或更高级别大纲段落之间的区域)
const success = await outlineEntry.outlineFocus();
console.log('定位到大纲区域成功:', success);
}
获取大纲条目的范围对象
async function getOutlineRange() {
const outlineEntry = await Application.ActiveDocument.OutlineEntries.item(1);
// 获取大纲段落区域
const contentRange = await outlineEntry.contentRange;
const text = await contentRange.getText();
console.log('大纲段落内容:', text);
// 获取大纲区域(从当前段落到下一个同级或更高级大纲段落之间)
const outlineRange = await outlineEntry.outlineRange;
const fullText = await outlineRange.getText();
console.log('完整大纲区域内容:', fullText);
}
通过 ID 获取大纲条目
async function getOutlineEntryById() {
// 先获取第一个大纲条目的 ID
const outlineEntry1 = await Application.ActiveDocument.OutlineEntries.item(1);
const id = outlineEntry1.id;
// 通过 ID 获取大纲条目
const outlineEntry2 = await Application.ActiveDocument.OutlineEntries.item(id);
const text = await outlineEntry2.getText();
console.log('通过 ID 获取的大纲内容:', text);
}
注意事项
- 只有设置了大纲级别的段落才会出现在 OutlineEntries 中
- 大纲级别通常对应文档的标题样式(标题1、标题2等)
contentRange返回大纲段落本身的范围outlineRange返回从当前大纲段落到下一个同级或更高级别段落之间的完整区域- 大纲条目的序号从 1 开始
- 可以通过序号或 ID 来获取大纲条目