Create and Update Table of Contents (TOC) in Word in Java
(Source/Credits: https://dev.to/eiceblue/create-and-update-table-of-contents-toc-in-java-25le)
This article demonstrates how to create and update Table of Contents (TOC) in a Word document in Java.
title: Create and Update Table of Contents (TOC) in Word in Java published: true description: This article demonstrates how to create and update Table of Contents (TOC) in a Word document in Java. tags: java, word, table of contents, TOC
A table of contents (TOC) provides a quick reference point for your document and gives the readers a brief overview of where to find what content.
In this article, we’re going to show you how to create and update Table of Contents (TOC) in a Word document within Java application using Free Spire.Doc for Java library.
The following example shows how to create a table of contents with default appearance that includes all text formatted with built-in styles Heading 1, Heading 2, Heading 3, and page numbers right-aligned with tab leaders. ```java import com.spire.doc.; import com.spire.doc.documents.; import com.spire.doc.fields.*;
import java.awt.*;
public class TableofContents { public static void main(String[] args){ //instantiate a Document object Document doc = new Document(); //add a section Section section = doc.addSection();
//add a paragraph
Paragraph para = section.addParagraph();
TextRange tr = para.appendText("Table of Contents");
//set font size and text color
tr.getCharacterFormat().setFontSize(11);
tr.getCharacterFormat().setTextColor(Color.blue);
//set the space after the paragraph
para.getFormat().setAfterSpacing(10);
//add a paragraph
para = section.addParagraph();
//add a table of contents with default appearance by specifying lower heading level and upper heading level. The heading level range must be from 1 to 9.
para.appendTOC(1, 3);
//add a new section
section = doc.addSection();
//add a paragraph
para = section.addParagraph();
para.appendText("Heading 1");
//apply Heading 1 style to the paragraph
para.applyStyle(BuiltinStyle.Heading_1);
section.addParagraph();
//add a paragraph
para = section.addParagraph();
para.appendText("Heading 2");
//apply Heading 2 style to the paragraph
para.applyStyle(BuiltinStyle.Heading_2);
section.addParagraph();
//add a paragraph
para = section.addParagraph();
para.appendText("Heading 3");
//apply Heading 3 style to the paragraph
para.applyStyle(BuiltinStyle.Heading_3);
section.addParagraph();
//update Table of Contents
doc.updateTableOfContents();
//save the resultant document
doc.saveToFile("createTableOfContents.docx", FileFormat.Docx);
}
} ```
We can also create a custom table of contents and determine what entries to appear in the table of contents by using TOC switches.
| Serial No. | Switches | Description | | ------------- |:-------------:| ------------:| | 1 | \o | Builds a table of contents from paragraphs formatted with styles that include outline levels (most commonly, heading styles). | | 2 | \t | Builds a table of contents from paragraphs formatted with styles other than the built-in styles. | | 3 | \u | Builds a table of contents from paragraphs whose formatting includes outline levels applied directly, in paragraph settings. | | 4 | \c | Lists figures, tables, charts, or other items that are numbered by a SEQ (Sequence) field. | | 5 | \a | Lists items captioned with the Caption command (References > Insert Caption) but omits caption labels and numbers. | | 6 | \f | Builds a table from TC fields. | | 7 | \l | Builds a table of contents from TC fields that assign entries to one of the specified levels. | | 8 | \b | Collects entries only from the portion of the document marked by the specified bookmark. | | 9 | \s | Includes a number such as a chapter number before the page number. | | 10 | \d | When used with the \s switch, specifies the character that separates the sequence numbers and page numbers. | | 11 | \p | Specifies the character that separates an entry and its page number.| | 12 | \n | Omits page numbers from the table of contents. | | 13 | \w | Preserves tab entries within table entries. | | 14 |\x |Preserves manual line breaks within table entries. | | 15 | \z |Hides tab leader and page numbers in Web layout view. | | 16 | \h |Inserts TOC entries as hyperlinks. |
For more information regarding TOC switches, check here.
The following example shows how to create a custom table of contents that includes all text formatted with built-in styles Heading 1, Heading 2 and Heading 3 but omits page numbers from heading levels 1-3. ```java import com.spire.doc.; import com.spire.doc.documents.; import com.spire.doc.fields.*;
import java.awt.*;
public class TableofContents { public static void main(String[] args){ //instantiate a Document object Document doc = new Document(); //add a section Section section = doc.addSection();
//add a paragraph
Paragraph para = section.addParagraph();
TextRange tr = para.appendText("Table of Contents");
//set font size and text color
tr.getCharacterFormat().setFontSize(11);
tr.getCharacterFormat().setTextColor(Color.blue);
//set the space after the paragraph
para.getFormat().setAfterSpacing(10);
//create a custom table of contents that omits page numbers from heading levels 1-3.
TableOfContent toc = new TableOfContent(doc, "{\\o \"1-3\" \\n 1-3}");
para = section.addParagraph();
para.getItems().add(toc);
para.appendFieldMark(FieldMarkType.Field_Separator);
para.appendText("TOC");
para.appendFieldMark(FieldMarkType.Field_End);
doc.setTOC(toc);
//add a new section
section = doc.addSection();
//add a paragraph
para = section.addParagraph();
para.appendText("Heading 1");
//apply Heading 1 style to the paragraph
para.applyStyle(BuiltinStyle.Heading_1);
section.addParagraph();
//add a paragraph
para = section.addParagraph();
para.appendText("Heading 2");
//apply Heading 2 style to the paragraph
para.applyStyle(BuiltinStyle.Heading_2);
section.addParagraph();
//add a paragraph
para = section.addParagraph();
para.appendText("Heading 3");
//apply Heading 3 style to the paragraph
para.applyStyle(BuiltinStyle.Heading_3);
section.addParagraph();
//update Table of Contents
doc.updateTableOfContents();
//save the resultant document
doc.saveToFile("customTableOfContents.docx", FileFormat.Docx);
}
} ```
Comments section