请问怎么判断文档目录设置了几级目录


请问怎么判断文档目录设置的是显示几级目录?

@ouchli 您可以使用 ListForamt.ListLevelNumber 确定列表级别编号

Document doc = new Document("D:\\Users\\00306664\\Desktop\\开发工作\\aspose\\temp\\qwe.doc");
DocumentBuilder builder = new DocumentBuilder(doc);
int listLevelNumber = builder.getListFormat().getListLevelNumber();

您好,按照以上方式获取目录显示级别,得到的结果为 0, 跟实际结果不符,请问哪里出现问题?

@ouchli 提供的代码返回文档中第一段的列表级别编号。 如果您需要获取文档中标题段落的列表级别数量,可以使用以下代码:

Document doc = new Document("C:\\Temp\\in.docx");

// Loop through all paragraphs in the document.
for (Paragraph p : (Iterable<Paragraph>)doc.getChildNodes(NodeType.PARAGRAPH, true))
{
    if (p.getParagraphFormat().isHeading() && p.isListItem())
        System.out.println(p.getListFormat().getListLevelNumber());
}

你好,我是想获取文档 目录的显示级别,跟标题没有关系。如图

@ouchli 如果您需要指定插入目录的级别,您可以在目录字段代码中指定它们:
{ TOC \o "1-3" \h \z \u }

我不是想插入,我是想读取,怎么读取呢

@ouchli 如果文档中存在现有目录,您可以使用以下代码来获取目录标题范围:

Document doc = new Document("C:\\Temp\\in.docx");
for (Field f : doc.getRange().getFields())
{
    if (f.getType() == FieldType.FIELD_TOC)
    {
        FieldToc toc = (FieldToc)f;
        System.out.println(toc.getHeadingLevelRange());
    }
}

你好,如果我想指定插入的目录级别只有 1 级,怎么设置呢
builder.insertTableOfContents(“TOC \o"1"\h \z \u”);
这样设置的结果:

@ouchli 您应该像这样指定范围:

builder.insertTableOfContents("TOC \\o \"1-1\" \\h \\z \\u");