如何在docx文件中創建三個或更多TOC,其中一個用於標題級別1,2,3等,另一個用於由程序創建的另一個樣式?例如,我爲表格標題創建了一個樣式,我想爲這個樣式的段落創建一個TOC。 我希望這些TOC在特殊段落中不在文件末尾。如何在java中由docx創建三種不同風格的TOC?
哪一個更好地做到這一點,Apache-poi? docx4j?閱讀Aspose?
我用apache-poi編寫我的其他代碼。
如何在docx文件中創建三個或更多TOC,其中一個用於標題級別1,2,3等,另一個用於由程序創建的另一個樣式?例如,我爲表格標題創建了一個樣式,我想爲這個樣式的段落創建一個TOC。 我希望這些TOC在特殊段落中不在文件末尾。如何在java中由docx創建三種不同風格的TOC?
哪一個更好地做到這一點,Apache-poi? docx4j?閱讀Aspose?
我用apache-poi編寫我的其他代碼。
使用Aspose.Words for Java,可以使用帶有所需開關參數的insertTableOfContents()方法在Word文檔中添加TOC字段。您可以根據需要添加儘可能多的TOC字段。以下代碼添加了三種不同風格的TOC字段。
指定開關的最簡單方法是使用插入 - >參考 - >索引和表格菜單插入和配置目錄到Word文檔,然後切換字段代碼的顯示以查看開關。您可以在Microsoft Word中按Alt + F9來打開或關閉字段代碼的顯示。
例如,創建目錄後,以下字段被插入到文檔中:{TOC \ o「1-3」\ h \ z \ u}。您可以複製\「1-3」\ h \ z \ u並將其用作開關參數。
請注意insertTableOfContents方法只添加了TOC字段,要填充TOC字段,您需要在代碼中調用updateFields()方法或在MS Word中按F9。
// 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");
我使用Aspose作爲開發人員傳播者。
您需要在TOC字段中指定樣式:http://webapp.docx4java.org/OnlineDemo/ecma376/WordML/TOC.html我想你可以用你提到的3個庫中的任何一個來做到這一點,但生成該領域的TOC可能會更難一些。你可以用docx4j做到這一點;請參閱https://github.com/plutext/docx4j/tree/master/src/samples/docx4j/org/docx4j/samples上的Toc *示例 – JasonPlutext