En utilisant Aspose.Words pour Java, vous pouvez utiliser la méthode insertTableOfContents() avec le paramètre switches requis pour ajouter le champ TOC dans le document Word. Vous pouvez ajouter autant de champs TOC que nécessaire. Le code suivant ajoute trois champs TOC différents avec des styles différents. Le moyen le plus simple de spécifier les commutateurs est d'insérer et de configurer une table des matières dans un document Word à l'aide du menu Insertion> Référence> Index et Tableaux, puis d'activer l'affichage des codes de champ pour voir les commutateurs. Vous pouvez appuyer sur Alt + F9 dans Microsoft Word pour activer ou désactiver l'affichage des codes de champ. Par exemple, après la création d'une table des matières, le champ suivant est inséré dans le document: {TOC \ "1-3" \ h \ z \ u}. Vous pouvez copier \ o "1-3" \ h \ z \ u et l'utiliser comme paramètre de commutateurs.
Veuillez noter que la méthode insertTableOfContents n'ajoute que le champ TOC, pour remplir le TOC, vous devez appeler la méthode updateFields() dans le code ou appuyer sur F9 dans MS Word.
// Use a blank document
com.aspose.words.Document doc = new com.aspose.words.Document();
// Create a document builder to insert content with into document.
DocumentBuilder builder = new DocumentBuilder(doc);
// Insert a table of contents at the beginning of the document.
//TOC for Heading 1,2 and 3 styles
builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");
//TOC for specific style e.g. Heading 2
builder.insertTableOfContents("\\h \\z \\t \"Heading 2,1\"");
//TOC for specific style e.g. Heading 3
builder.insertTableOfContents("\\h \\z \\t \"Heading 3,1\"");
// Start the actual document content on the second page.
builder.insertBreak(BreakType.PAGE_BREAK);
// Build a document with complex structure by applying different heading styles thus creating TOC entries.
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
builder.writeln("Heading 1");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2);
builder.writeln("Heading 1.1");
builder.writeln("Heading 1.2");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
builder.writeln("Heading 2");
builder.writeln("Heading 3");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2);
builder.writeln("Heading 3.1");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_3);
builder.writeln("Heading 3.1.1");
builder.writeln("Heading 3.1.2");
builder.writeln("Heading 3.1.3");
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_2);
builder.writeln("Heading 3.2");
builder.writeln("Heading 3.3");
// Call the method below to update the TOC.
doc.updateFields();
doc.save("Sample_out_1710.docx");
Je travaille avec Aspose comme développeur Evangelist.
Vous devez spécifier les styles dans votre champ TOC: http://webapp.docx4java.org/OnlineDemo/ecma376/WordML/TOC.html J'imagine que vous pouvez le faire avec l'une des 3 bibliothèques que vous mentionnez, mais en générant le TOC de ce domaine pourrait être un peu plus difficile. Vous pouvez le faire avec docx4j; voir les exemples Toc * sur https://github.com/plutext/docx4j/tree/master/src/samples/docx4j/org/docx4j/samples – JasonPlutext