2017-10-15 8 views
0

Comment est-ce que je peux créer trois ou plus TOC dans le dossier de docx que l'un d'eux est pour les niveaux 1, 2, 3 et d'autres sont pour d'autres styles qui sont créés par le programme? Par exemple, je crée un style pour un titre de table et je veux créer une table des matières pour les paragraphes avec ce style. Et je veux que ces COT soient dans des paragraphes spéciaux pas à la fin du fichier.Comment créer trois TOC avec différents styles dans docx by java?

Lequel est le mieux à faire, Apache-poi? docx4j? Aspose? J'écris mon autre code avec apache-poi.

+0

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

Répondre

0

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.