我读取了一个文档中的所有paragraph,但是我无法判断这个paragraph是否一个目录内容。
测试目录.docx (15.9 KB)
比如,这样一个文档,我会抽取它的所有paragraph节点,这些paragraph中包含一些目录(TOC)内容,我如何把它识别出来。
如下图,红框中的部分就是目录(TOC),我需要判断出这部分内容。
image.png (3.8 KB)
请注意,TOC 是字段,其字段代码是 { TOC \o “1-3” \h \z \u }。 请在 MS Word 中打开文档并按 Alt + F9 进行查看。
在 Aspose.Words 的 DOM 中,它被导入为 FieldToc。 您可以使用以下代码片段获取它。
Document doc = new Document(dataDir + "in.docx");
FieldToc field = (FieldToc)doc.getRange().getFields().get(0);
如果要获取 TOC 字段的段落,可以使用以下代码示例。 希望这对您有所帮助。
Document doc = new Document(dataDir + "测试目录.docx");
FieldToc field = (FieldToc)doc.getRange().getFields().get(0);
StructuredDocumentTag sdt = (StructuredDocumentTag)field.getStart().getAncestor(NodeType.STRUCTURED_DOCUMENT_TAG);
if(sdt != null)
{
for(Paragraph paragraph :(Iterable<Paragraph>)sdt.getChildNodes(NodeType.PARAGRAPH, true))
{
System.out.println(paragraph.toString(SaveFormat.TEXT));
}
}
请使用以下代码示例获取目录字段的隐藏超链接。 希望这对您有所帮助。
Document doc = new Document(dataDir + "测试目录.docx");
for(Field field : doc.getRange().getFields())
{
if(field.getType() == FieldType.FIELD_HYPERLINK && ((FieldHyperlink)field).getSubAddress().startsWith("_Toc"))
{
System.out.println(field.getFieldCode());
}
}