使用 Aspose.Words 忽略 TOC 中的标题
Ignore the title in TOC using Aspose.Words
我正在生成一个文档,其中包含一个标题以及多个级别的嵌套部分和 sub-sections。我想包括 table 的内容。但是,除了指定的标题级别之外,TOC 还包括标题。如何从目录中排除标题?
这是我生成文档的代码:
public void DocWithTOC()
{
// start with a blank document
var doc = new Document();
var builder = new DocumentBuilder(doc);
// add a title. this should not be in the TOC.
builder.CurrentParagraph.AppendChild(new Run(doc) { Text = "Document Title" } );
builder.CurrentParagraph.ParagraphFormat.StyleIdentifier = StyleIdentifier.Title;
// add TOC
builder.InsertTableOfContents("\o \"1-1\" \h \z \u"); // \o "1-1" --> only apply TOC to Heading 1 elements
// add first section (heading1). this should be in the TOC.
var para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "Section 1" });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
// add first section content.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "This is the content under the first section. The header is included in the TOC." });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
// add a sub-section (heading2). should not be in TOC.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "Subsection 1.1" });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading2;
// add first sub-section content.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "This is the content under the first sub-section of the first section. The header is NOT in the TOC." });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
// add second section. this should be in the TOC.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "Section 2" });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
// add second section content.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "The second section also has content. The header is included in the TOC." });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
// apply TOC via Aspose.Words API
doc.UpdateFields();
// save to My Documents folder
var myDocsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
doc.Save(Path.Combine(myDocsPath, "AsposeTOC.docx"));
}
注意 Document Title
包含在 TOC 中:
我正在使用 Aspose.Words 版本 17.1.0。
Aspose.Words 中似乎存在一个错误,在生成 TOC 时将 Title
样式视为与 Heading 1
样式相同。解决方法是改为使用 \t
switch 将目录格式应用于自定义样式。然后我们可以指定 Heading 1
作为 'custom' 样式的名称。
// \t "Heading 1, 1" --> custom formatting to treat Heading 1 styles as level 1 elements in the TOC
builder.InsertTableOfContents("\h \z \t \"Heading 1, 1");
此查询已在下面的 Aspose.Words 论坛中得到解答:
但是,我复制下面的消息供您参考:
请尝试运行下面的代码,看看是否符合您的要求?
Document doc = new Document(MyDir + @"AsposeTOC.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToDocumentEnd();
builder.Writeln();
builder.Writeln();
builder.InsertTableOfContents("TOC \o \"2 - 3\" \h \z \t \"Heading 1, 1");
doc.UpdateFields();
doc.Save(MyDir + @"17.1.0.docx");
希望这对您有所帮助。我在 Aspose 工作,担任开发人员布道师
我正在生成一个文档,其中包含一个标题以及多个级别的嵌套部分和 sub-sections。我想包括 table 的内容。但是,除了指定的标题级别之外,TOC 还包括标题。如何从目录中排除标题?
这是我生成文档的代码:
public void DocWithTOC()
{
// start with a blank document
var doc = new Document();
var builder = new DocumentBuilder(doc);
// add a title. this should not be in the TOC.
builder.CurrentParagraph.AppendChild(new Run(doc) { Text = "Document Title" } );
builder.CurrentParagraph.ParagraphFormat.StyleIdentifier = StyleIdentifier.Title;
// add TOC
builder.InsertTableOfContents("\o \"1-1\" \h \z \u"); // \o "1-1" --> only apply TOC to Heading 1 elements
// add first section (heading1). this should be in the TOC.
var para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "Section 1" });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
// add first section content.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "This is the content under the first section. The header is included in the TOC." });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
// add a sub-section (heading2). should not be in TOC.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "Subsection 1.1" });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading2;
// add first sub-section content.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "This is the content under the first sub-section of the first section. The header is NOT in the TOC." });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
// add second section. this should be in the TOC.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "Section 2" });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading1;
// add second section content.
para = builder.InsertParagraph();
para.AppendChild(new Run(doc) { Text = "The second section also has content. The header is included in the TOC." });
para.ParagraphFormat.StyleIdentifier = StyleIdentifier.Normal;
// apply TOC via Aspose.Words API
doc.UpdateFields();
// save to My Documents folder
var myDocsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
doc.Save(Path.Combine(myDocsPath, "AsposeTOC.docx"));
}
注意 Document Title
包含在 TOC 中:
我正在使用 Aspose.Words 版本 17.1.0。
Aspose.Words 中似乎存在一个错误,在生成 TOC 时将 Title
样式视为与 Heading 1
样式相同。解决方法是改为使用 \t
switch 将目录格式应用于自定义样式。然后我们可以指定 Heading 1
作为 'custom' 样式的名称。
// \t "Heading 1, 1" --> custom formatting to treat Heading 1 styles as level 1 elements in the TOC
builder.InsertTableOfContents("\h \z \t \"Heading 1, 1");
此查询已在下面的 Aspose.Words 论坛中得到解答:
但是,我复制下面的消息供您参考:
请尝试运行下面的代码,看看是否符合您的要求?
Document doc = new Document(MyDir + @"AsposeTOC.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToDocumentEnd();
builder.Writeln();
builder.Writeln();
builder.InsertTableOfContents("TOC \o \"2 - 3\" \h \z \t \"Heading 1, 1");
doc.UpdateFields();
doc.Save(MyDir + @"17.1.0.docx");
希望这对您有所帮助。我在 Aspose 工作,担任开发人员布道师