2017-10-15 19 views
0

어떻게 3 개 이상의 TOC를 docx 파일에 만들 수 있습니까? 그 중 하나는 제목 레벨 1, 2, 3이고 다른 것들은 프로그램에 의해 생성 된 다른 스타일을위한 것입니까? 예를 들어 표 제목 스타일을 만들고이 스타일로 단락의 목차를 만들려고합니다. 그리고이 TOC는 파일의 끝 부분이 아닌 특별한 단락에 있어야합니다.docx에서 Java로 다른 스타일로 3 가지 목차를 만드는 방법은 무엇입니까?

이 중 어느 것이 더 좋습니까? Apache-poi? docx4j? Aspose?

나는 다른 코드를 apache-poi로 작성합니다.

+0

TOC 필드에 스타일을 지정해야합니다. http://webapp.docx4java.org/OnlineDemo/ecma376/WordML/TOC.html 내가 언급 한 세 가지 라이브러리 중 하나를 사용하여이 작업을 수행 할 수 있다고 상상해보십시오. 해당 필드의 목차는 약간 더 어려울 수 있습니다. 당신은 docx4j로 그렇게 할 수 있습니다; Toc * 샘플은 https://github.com/plutext/docx4j/tree/master/src/samples/docx4j/org/docx4j/samples에서 확인하십시오. – JasonPlutext

답변

0

Java 용 Aspose.Words를 사용하면 Word 문서에서 TOC 필드를 추가하는 데 필요한 스위치 매개 변수가있는 insertTableOfContents() 메소드를 사용할 수 있습니다. 필요한만큼 TOC 필드를 추가 할 수 있습니다. 다음 코드는 서로 다른 스타일의 세 가지 TOC 필드를 추가합니다.

스위치를 지정하는 가장 쉬운 방법은 삽입 -> 참조 -> 색인 및 표 메뉴를 사용하여 목차를 Word 문서에 삽입하고 구성한 다음 스위치를보기 위해 필드 코드 표시를 전환하는 것입니다. Microsoft Word에서 Alt + F9를 눌러 필드 코드 표시를 켜거나 끌 수 있습니다.

예를 들어, 목차를 만든 후에는 {TOC \ o "1-3"\ h \ z \ u} 필드가 문서에 삽입됩니다. \ o "1-3"\ h \ z \ u를 복사하여 스위치 매개 변수로 사용할 수 있습니다.

insertTableOfContents 메서드는 코드에서 updateFields() 메서드를 호출하거나 MS Word에서 F9 키를 눌러야하는 TOC 필드를 채우기 위해 TOC 필드 만 추가합니다.

// 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와 협력합니다.