Skip to main content

获取文档大纲内容

场景说明

获取文档的大纲结构,可以实现文档目录导航、章节提取等功能。大纲条目通常对应文档中设置了大纲级别的段落(如标题)。

适用场景:

  • 文档目录提取
  • 章节导航
  • 文档结构分析
  • 快速定位到指定章节

相关 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 来获取大纲条目