Tạo một mục lục có thể điều hướng là điều cần thiết khi tạo các báo cáo Word lớn hoặc sổ tay mà người dùng cần lướt nhanh. Conholdate.Total for Java cung cấp một SDK mạnh mẽ giúp đơn giản hóa việc làm việc với các tệp DOCX trực tiếp từ các ứng dụng Java. Trong hướng dẫn từng bước này, bạn sẽ học cách thêm mục lục vào tài liệu Word trong Java, bao gồm cài đặt, giải thích mã và các thực tiễn tốt nhất.
Ví dụ Hoàn chỉnh về Thêm Mục Lục vào Tài liệu Word bằng Java
Ví dụ sau đây minh họa cách chèn mục lục vào tệp DOCX bằng cách sử dụng Conholdate.Total for Java.
import com.aspose.words.Document;
import com.aspose.words.DocumentBuilder;
import com.aspose.words.BreakType;
import com.aspose.words.StyleIdentifier;
public class AddTableOfContentsExample {
public static void main(String[] args) throws Exception {
// Directory where the output document will be saved
String dataDir = "output/";
// Create a new document and a builder to work with it
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Insert a table of contents field at the current cursor position.
// "\o \"1-3\" \h \z \u" includes heading levels 1-3, makes entries
// clickable hyperlinks, hides tab leaders in Web layout, and uses
// outline levels applied to non-heading styles.
builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");
// Start the actual document content on the second page.
builder.insertBreak(BreakType.PAGE_BREAK);
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");
// The newly inserted table of contents is initially empty.
// It needs to be populated by updating the fields in the document.
doc.updateFields();
doc.save(dataDir + "TableOfContents.docx");
}
}
Lưu ý: Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật thư mục đầu ra (
dataDir) để phù hợp với vị trí tệp thực tế của bạn, xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển của bạn. Nếu gặp bất kỳ vấn đề nào, vui lòng tham khảo tài liệu chính thức hoặc liên hệ với đội hỗ trợ để được trợ giúp.
Hiểu cách Thêm Mục Lục vào Tài liệu Word trong mã Java
Dưới đây là phân tích các bước chính được thực hiện bởi mã mẫu:
Tạo tài liệu và một builder -
Documentđại diện cho tệp Word trong bộ nhớ, vàDocumentBuildercung cấp cho bạn các phương thức để chèn nội dung và trường vào nó.Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc);Chèn trường TOC -
insertTableOfContentsghi một trường TOC tại vị trí con trỏ. Chuỗi chuyển đổi kiểm soát hành vi của nó:\o "1-3"bao gồm các cấp tiêu đề từ 1 đến 3,\hlàm cho các mục có thể nhấp được dưới dạng siêu liên kết,\zẩn các dấu tab và số trang trong chế độ xem Web layout, và\usử dụng cấp độ đề cương được áp dụng cho các đoạn văn.builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u");Bắt đầu nội dung trên một trang mới -
insertBreak(BreakType.PAGE_BREAK)đẩy phần nội dung thực tế của tài liệu lên trang sau mục lục, vì vậy mục lục sẽ có trang riêng của nó.
builder.insertBreak(BreakType.PAGE_BREAK);
- Thêm nội dung dạng tiêu đề - Đặt
setStyleIdentifiertrên định dạng đoạn văn của builder thànhHEADING_1,HEADING_2hoặcHEADING_3trước khi gọiwritelnsẽ tạo ra các đoạn văn có kiểu tiêu đề tích hợp tương ứng, mà trường TOC sẽ quét để lấy các mục.
builder.getParagraphFormat().setStyleIdentifier(StyleIdentifier.HEADING_1);
builder.writeln("Heading 1");
Tham chiếu API chi tiết có sẵn tại trang API Reference.
- Cập nhật trường và lưu -
doc.updateFields()điền mục lục (TOC) với các mục và số trang bây giờ các tiêu đề đã tồn tại, vàdoc.saveghi tài liệu ra đĩa.doc.updateFields(); doc.save(dataDir + "TableOfContents.docx");
Cài đặt và cấu hình Conholdate.Total cho Java
Thêm kho Maven của Conholdate và phụ thuộc SDK vào tệp pom.xml của bạn:
<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>
Tải xuống gói SDK mới nhất từ trang tải xuống. SDK yêu cầu Java 8 trở lên và chạy trên bất kỳ JVM tiêu chuẩn nào. Không cần các thành phần runtime bổ sung.
Các thực tiễn tốt nhất để tạo mục lục Word bằng Java
- Sử dụng kiểu tiêu đề nhất quán - Mục lục (TOC) sẽ nhận các đoạn được định dạng bằng các cấp tiêu đề có sẵn (Heading 1, Heading 2, v.v.). Đảm bảo tài liệu nguồn của bạn sử dụng các kiểu này để tạo mục nhập một cách đáng tin cậy.
- Giới hạn độ sâu tiêu đề - Bao gồm quá nhiều cấp độ có thể làm cho mục lục trở nên cồng kềnh. Các báo cáo thường dùng các cấp độ 1‑3, như trong ví dụ với tùy chọn
\o "1-3". - Bật siêu liên kết - Thêm tùy chọn
\htạo các mục có thể nhấp, cải thiện việc điều hướng trong tài liệu cuối cùng. - Luôn gọi updateFields sau khi chèn - Trường mục lục mới chèn sẽ rỗng cho đến khi chạy
doc.updateFields(), vì vậy hãy gọi nó sau khi đã thêm toàn bộ nội dung tiêu đề. - Xác thực sau khi chèn - Mở tệp DOCX đã tạo và cập nhật các trường (Ctrl +A, F9) để xác nhận các số trang đúng, đặc biệt sau các chỉnh sửa tiếp theo.
- Tái sử dụng chuỗi tùy chọn - Nếu bạn tạo nhiều tài liệu trong một lô, hãy xây dựng chuỗi tùy chọn một lần và tái sử dụng nó trong các lần gọi để duy trì định dạng nhất quán.
Kết luận
Thêm mục lục vào tài liệu Word trong Java trở nên đơn giản với Conholdate.Total for Java. Bằng cách tạo tài liệu, chèn trường TOC với các tùy chọn thích hợp, thêm nội dung có kiểu tiêu đề và gọi updateFields, bạn có thể tự động tạo các báo cáo và hướng dẫn chuyên nghiệp. Hãy nhớ cài đặt SDK, tuân theo các khuyến nghị thực hành tốt nhất và kiểm tra mục lục được tạo trong môi trường mục tiêu của bạn. Đối với triển khai sản xuất, bạn sẽ cần một bản sao có giấy phép; thông tin giá cả có sẵn trên trang giá và giấy phép tạm thời có thể được lấy từ trang giấy phép tạm thời.
Câu hỏi thường gặp
Cách đơn giản nhất để thêm mục lục vào tài liệu Word bằng Java là gì? Gọi
builder.insertTableOfContents("\\o \"1-3\" \\h \\z \\u"), thêm các đoạn văn có kiểu tiêu đề, sau đó gọidoc.updateFields()trước khi lưu, như được minh họa trong ví dụ mã.Làm thế nào tôi có thể kiểm soát các cấp độ tiêu đề xuất hiện trong mục lục? Thay đổi phạm vi cấp độ bên trong công tắc
\ocủa chuỗi được truyền vàoinsertTableOfContents, ví dụ\o "1-2"để chỉ bao gồm các cấp độ 1 và 2.Có thể tạo mục lục (TOC) cho mẫu Word sẽ được điền sau không? Có. Chèn trường TOC vào tệp mẫu trước khi điền nội dung động; gọi
updateFields()sau khi các tiêu đề được thêm vào sẽ tự động tạo mục lục.Tôi có cần kết nối internet để sử dụng SDK này không? Không. Conholdate.Total for Java là một thư viện cục bộ chạy trên máy chủ hoặc máy tính để bàn của bạn mà không cần gọi dịch vụ bên ngoài.
