Generating a navigable table of contents is essential when creating large Word reports or manuals that users need to skim quickly. Conholdate.Total for Java provides a robust SDK that simplifies working with DOCX files directly from Java applications. In this step‑by‑step guide you will learn how to add a table of contents to a Word document in Java, covering setup, code explanation, and best practices.
Full Working Example for Adding Table of Contents to Word Document in Java
The following example demonstrates how to insert a table of contents into an existing DOCX file using Conholdate.Total for Java.
import com.groupdocs.words.Document;
import com.groupdocs.words.DocumentBuilder;
import com.groupdocs.words.TableOfContentsOptions;
import com.groupdocs.words.SaveFormat;
import com.groupdocs.words.TabLeader;
public class AddTableOfContentsExample {
public static void main(String[] args) throws Exception {
// Paths to the source and destination Word documents
String inputPath = "input.docx";
String outputPath = "output.docx";
// Load the existing document, add a TOC, and save the result
try (Document doc = new Document(inputPath)) {
DocumentBuilder builder = new DocumentBuilder(doc);
// Move cursor to the beginning of the document where the TOC will be inserted
builder.moveToDocumentStart();
// Configure TOC options
TableOfContentsOptions tocOptions = new TableOfContentsOptions();
tocOptions.setUpperHeadingLevel(1); // Include headings from level 1
tocOptions.setLowerHeadingLevel(3); // up to level 3
tocOptions.setRightAlignPageNumbers(true); // Align page numbers to the right
tocOptions.setUseHyperlinks(true); // Make entries clickable
tocOptions.setTabLeader(TabLeader.DOTS); // Use dotted leader
// Insert the Table of Contents
builder.insertTableOfContents(tocOptions);
// Save the modified document
doc.save(outputPath, SaveFormat.DOCX);
}
}
}
Note: This code example demonstrates the core functionality. Before using it in your project, make sure to update the file paths (
input.docx,output.docx, etc.) to match your actual file locations, verify that all required dependencies are properly installed, and test thoroughly in your development environment. If you encounter any issues, please refer to the official documentation or reach out to the support team for assistance.
Understanding the Add Table of Contents to Word Document in Java Code
Below is a breakdown of the main steps performed by the sample code:
Load the source document - The
Documentclass reads the existing DOCX file.try (Document doc = new Document(inputPath)) {Create a DocumentBuilder -
DocumentBuilderprovides methods to edit the document content.DocumentBuilder builder = new DocumentBuilder(doc);Position the cursor -
moveToDocumentStart()moves the insertion point to the very beginning of the file, ensuring the TOC appears before any content.builder.moveToDocumentStart();Configure TOC options -
TableOfContentsOptionslets you define heading levels, page‑number alignment, hyperlink usage, and the tab leader style.TableOfContentsOptions tocOptions = new TableOfContentsOptions(); tocOptions.setUpperHeadingLevel(1); tocOptions.setLowerHeadingLevel(3); tocOptions.setRightAlignPageNumbers(true); tocOptions.setUseHyperlinks(true); tocOptions.setTabLeader(TabLeader.DOTS);Detailed API reference is available at the API Reference page.
Insert the TOC and save -
insertTableOfContentsadds the field, anddoc.savewrites the updated file in DOCX format.builder.insertTableOfContents(tocOptions); doc.save(outputPath, SaveFormat.DOCX);
Installing and Configuring Conholdate.Total for Java
Add the Conholdate Maven repository and the SDK dependency to your pom.xml:
<repositories>
<repository>
<id>conholdate-repo</id>
<name>Conholdate Maven Repository</name>
<url>https://repository.conholdate.com/repo/</url>
</repository>
</repositories>
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.9</version>
<type>pom</type>
</dependency>
Download the latest SDK package from the download page. The SDK requires Java 8 or higher and runs on any standard JVM. No additional runtime components are needed.
Best Practices for Generating Word TOC with Java
- Use consistent heading styles - The TOC picks up paragraphs styled with built‑in heading levels (Heading 1, Heading 2, etc.). Ensure your source document uses these styles for reliable entry generation.
- Limit heading depth - Including too many levels can make the TOC unwieldy. Typical reports use levels 1‑3, as shown in the example.
- Enable hyperlinks - Setting
setUseHyperlinks(true)creates clickable entries, improving navigation in the final document. - Validate after insertion - Open the generated DOCX and update fields (Ctrl +A, F9) to confirm page numbers are correct, especially after further edits.
- Reuse the TOC options object - If you generate multiple documents in a batch, configure the options once and reuse them to reduce object creation overhead.
Conclusion
Adding a table of contents to a Word document in Java becomes straightforward with Conholdate.Total for Java. By loading a DOCX, configuring TableOfContentsOptions, and inserting the field, you can automate the creation of professional reports and manuals. Remember to install the SDK, follow the best‑practice recommendations, and test the generated TOC in your target environment. For production deployments you’ll need a licensed copy; pricing details are available on the pricing page and a temporary license can be obtained from the temporary license page.
FAQs
What is the simplest way to add a table of contents to a Word document in Java?
UseDocumentBuilder.moveToDocumentStart()followed byinsertTableOfContentswith a configuredTableOfContentsOptionsobject, as demonstrated in the code example.How can I control which heading levels appear in the TOC?
SetsetUpperHeadingLevelandsetLowerHeadingLevelon theTableOfContentsOptionsinstance to include only the desired levels.Is it possible to generate a TOC for a Word template that will be filled later?
Yes. Insert the TOC into the template file before populating dynamic content; the TOC will automatically reference the headings added later.Do I need an internet connection to use this SDK?
No. Conholdate.Total for Java is a local library that runs on your server or desktop without any external service calls.
