Làm việc Với Mục Lục
Thường thì bạn sẽ làm việc với các tài liệu có chứa một mục lục (TOC). Sử dụng Aspose.Words bạn có thể chèn mục lục của riêng mình hoặc xây dựng lại hoàn toàn mục lục hiện có trong tài liệu chỉ bằng một vài dòng mã.
Bài viết này phác thảo cách làm việc với trường mục lục và trình bày:
- Làm thế nào để chèn một thương hiệu mới TOC.
- Cập nhật mới hoặc hiện có TOCs trong tài liệu.
- Chỉ định các công tắc để kiểm soát định dạng và cấu trúc tổng thể của TOC.
- Cách sửa đổi kiểu dáng và hình thức của mục lục.
- Cách xóa toàn bộ trường
TOC
cùng với tất cả các mục từ tài liệu.
Chèn Mục Lục Theo Chương Trình
Bạn có thể chèn trường TOC
(mục lục) vào tài liệu ở vị trí hiện tại bằng cách gọi phương thức InsertTableOfContents.
Một mục lục trong tài liệu Word có thể được xây dựng theo nhiều cách và được định dạng bằng nhiều tùy chọn khác nhau. Trường chuyển đổi mà bạn chuyển sang phương thức điều khiển cách bảng được xây dựng và hiển thị trong tài liệu của bạn.
Các công tắc mặc định được sử dụng trong TOC
được chèn vào Microsoft Word là "\o “1-3 \h \z \u”. Mô tả về các công tắc này cũng như danh sách các công tắc được hỗ trợ có thể được tìm thấy ở phần sau của bài viết. Bạn có thể sử dụng hướng dẫn đó để có được các công tắc chính xác hoặc nếu bạn đã có một tài liệu chứa TOC
tương tự mà bạn muốn, bạn có thể hiển thị mã trường (ALT+F9) và sao chép các công tắc trực tiếp từ trường.
Ví dụ mã sau đây cho thấy cách chèn trường Mục Lục vào tài liệu:
Ví dụ mã sau đây trình bày cách chèn Mục lục (TOC) vào tài liệu bằng cách sử dụng kiểu tiêu đề làm mục nhập:
Mã chứng minh mục lục mới được chèn vào một tài liệu trống. Lớp DocumentBuilder sau đó được sử dụng để chèn một số định dạng nội dung mẫu với các kiểu tiêu đề thích hợp được sử dụng để đánh dấu nội dung được bao gồm trong TOC. Các dòng tiếp theo sau đó điền TOC
bằng cách cập nhật các trường và bố cục trang của tài liệu.
TOC
, nhưng không có nội dung hiển thị. Điều này là do trường TOC
đã được chèn nhưng chưa được điền cho đến khi nó được cập nhật trong tài liệu. Thông tin thêm về điều này được thảo luận trong phần tiếp theo.
Cập Nhật Mục Lục
Aspose.Words cho phép bạn cập nhật hoàn toàn TOC
chỉ với một vài dòng mã. Điều này có thể được thực hiện để điền vào TOC
mới được chèn hoặc để cập nhật TOC
hiện có sau khi các thay đổi đối với tài liệu đã được thực hiện.
Hai phương pháp sau đây phải được sử dụng để cập nhật các trường TOC
trong tài liệu:
Xin lưu ý rằng hai phương thức cập nhật này được yêu cầu phải được gọi theo thứ tự đó. Nếu đảo ngược mục lục sẽ được điền nhưng không có số trang nào được hiển thị. Bất kỳ số lượng khác nhau TOCs có thể được cập nhật. Các phương thức này sẽ tự động cập nhật tất cả TOCs được tìm thấy trong tài liệu.
Ví dụ mã sau đây cho thấy cách xây dựng lại hoàn toàn các trường TOC
trong tài liệu bằng cách gọi cập nhật trường:
Cuộc gọi đầu tiên đến Document.updateFields() sẽ xây dựng TOC
, tất cả các mục văn bản được điền và TOC
xuất hiện gần như hoàn tất. Điều duy nhất còn thiếu là số trang hiện được hiển thị với “?”.
Cuộc gọi thứ hai đến Document.updatePageLayout() sẽ xây dựng bố cục của tài liệu trong bộ nhớ. Điều này cần phải được thực hiện để thu thập số trang của các mục. Các số trang chính xác được tính từ cuộc gọi này sau đó được chèn vào TOC.
Sử dụng Công tắc Để Kiểm Soát Mục Lục Hành Vi
Như với bất kỳ trường nào khác, trường TOC
có thể chấp nhận các công tắc được xác định trong mã trường kiểm soát cách xây dựng mục lục. Một số công tắc nhất định được sử dụng để kiểm soát mục nào được bao gồm và ở cấp độ nào trong khi các công tắc khác được sử dụng để kiểm soát sự xuất hiện của TOC. Các công tắc có thể được kết hợp với nhau để cho phép tạo ra một mục lục phức tạp.
Theo mặc định, các công tắc này ở trên được bao gồm khi chèn TOC
mặc định trong tài liệu. A TOC
không có công tắc sẽ bao gồm nội dung từ các kiểu tiêu đề tích hợp (như thể công tắc \O được đặt).
Các công tắc TOC
có sẵn được hỗ trợ bởi Aspose.Words được liệt kê bên dưới và việc sử dụng chúng được mô tả chi tiết. Chúng có thể được chia thành các phần riêng biệt dựa trên loại của chúng. Các công tắc trong phần đầu tiên xác định nội dung nào sẽ bao gồm trong TOC
và các công tắc trong phần thứ hai kiểm soát sự xuất hiện của TOC.
Nếu một công tắc không được liệt kê ở đây thì hiện tại nó không được hỗ trợ. Tất cả các công tắc sẽ được hỗ trợ trong các phiên bản trong tương lai. Chúng tôi đang bổ sung thêm hỗ trợ cho mỗi phiên bản.
Công Tắc Đánh Dấu Mục Nhập
Chuyển đổi | Mô tả |
---|---|
Heading Styles * (\O Chuyển đổi)* |
Công tắc này xác định rằng
|
Outline Levels * (\U chuyển đổi)* |
Mỗi đoạn có thể xác định một mức phác thảo theo các tùy chọn Đoạn.
Lưu ý rằng các kiểu tiêu đề tích hợp như Heading 1 có mức phác thảo bắt buộc được đặt trong cài đặt kiểu.
|
Custom Styles * (\T chuyển đổi)* |
Công tắc này sẽ cho phép các kiểu tùy chỉnh được sử dụng khi thu thập các mục được sử dụng trong TOC. Điều này thường được sử dụng cùng với công tắc \O để bao gồm các kiểu tùy chỉnh cùng với các kiểu tiêu đề tích hợp trong TOC.
sẽ sử dụng nội dung được tạo kiểu với CustomHeading1 làm nội dung cấp 1 trong |
Sử Dụng Các Trường TC (\F và \L Công tắc) |
Trong các phiên bản cũ hơn của Microsoft Word, cách duy nhất để xây dựng Các trường này có thể được chèn vào tài liệu ở bất kỳ vị trí nào giống như bất kỳ trường nào khác và được biểu thị bằng phép liệt kê
sẽ chỉ bao gồm TC các trường như
Trường
- \F – Đã giải thích ở trên. - \L – Xác định mức độ nào trong - |
Công Tắc Liên Quan Đến Ngoại Hình
Chuyển đổi | Mô tả |
---|---|
Omit Page Numbers * (\N Chuyển đổi)* |
Công tắc này được sử dụng để ẩn số trang cho các cấp độ nhất định của TOC. Ví dụ, bạn có thể xác định
và số trang trên các mục của cấp độ 3 và bốn sẽ được ẩn cùng với các dấu chấm lãnh đạo (nếu có). Để chỉ định một cấp độ, một phạm vi vẫn nên được sử dụng, ví dụ: “1-1” sẽ chỉ loại trừ số trang cho cấp độ đầu tiên. |
Chèn Dưới Dạng Siêu Liên Kết * (\H Chuyển đổi)* |
Công tắc này chỉ định rằng các mục |
Set Separator Character * (\P Chuyển đổi)* |
Công tắc này cho phép nội dung tách tiêu đề của mục nhập và đánh số trang dễ dàng thay đổi trong TOC. Dấu phân cách để sử dụng phải được chỉ định sau công tắc này và được đặt trong dấu lời nói. |
Preserve Tab Entries * (\W Chuyển đổi)* |
Sử dụng công tắc này sẽ chỉ định rằng bất kỳ mục nào có ký tự tab, ví dụ: tiêu đề có tab ở cuối dòng, sẽ được giữ lại dưới dạng ký tự tab thích hợp khi điền TOC. Điều này có nghĩa là hàm của ký tự tab sẽ có trong |
Preserve New Line Entries * (\X Chuyển đổi)* |
Tương tự như công tắc ở trên, công tắc này chỉ định rằng các tiêu đề trải dài trên nhiều dòng (sử dụng các ký tự dòng mới, không phải các đoạn riêng biệt) sẽ được giữ nguyên như trong TOC được tạo. Ví dụ: một tiêu đề để trải rộng trên nhiều dòng có thể sử dụng ký tự dòng mới (Ctrl + Enter hoặc |
Chèn Các Trường TC
Bạn có thể chèn một trường TC mới ở vị trí hiện tại của DocumentBuilder
bằng cách gọi phương thức DocumentBuilder.InsertField
và chỉ định tên trường là “TC” cùng với bất kỳ công tắc nào cần thiết.
Ví dụ mã sau đây cho thấy cách chèn trường TC
vào tài liệu bằng DocumentBuilder.
Thường thì một dòng văn bản cụ thể được chỉ định cho TOC
và được đánh dấu bằng trường TC
. Cách dễ dàng để làm điều này trong MS Word là đánh dấu văn bản và nhấn ALT+SHIFT+O. Thao tác này sẽ tự động tạo trường TC
bằng văn bản đã chọn. Kỹ thuật tương tự có thể được thực hiện thông qua mã. Đoạn mã dưới đây sẽ tìm thấy văn bản khớp với đầu vào và chèn trường TC
ở cùng vị trí với văn bản. Mã này dựa trên cùng một kỹ thuật được sử dụng trong bài viết. Ví dụ mã sau đây cho thấy cách tìm và chèn trường TC
tại văn bản trong tài liệu.
Sửa đổi Mục Lục
Thay đổi Định Dạng Của Các Kiểu
Định dạng của các mục trong TOC
không sử dụng kiểu ban đầu của các mục được đánh dấu, thay vào đó, mỗi cấp độ được định dạng bằng cách sử dụng kiểu TOC
tương đương. Ví dụ: cấp độ đầu tiên trong TOC
được định dạng với kiểu TOC1, cấp độ thứ hai được định dạng với kiểu TOC2, v. v. Điều này có nghĩa là để thay đổi giao diện của TOC
, các kiểu này phải được sửa đổi. Trong Aspose.Words các kiểu này được biểu thị bằng StyleIdentifier.TOC1
độc lập với miền địa phương đến StyleIdentifier.TOC9
và có thể được lấy từ bộ sưu tập Document.Styles
bằng cách sử dụng các định danh này.
Khi kiểu thích hợp của tài liệu đã được truy xuất, định dạng cho kiểu này có thể được sửa đổi. Bất kỳ thay đổi nào đối với các kiểu này sẽ được tự động phản ánh trong TOCs trong tài liệu.
Ví dụ mã sau thay đổi thuộc tính định dạng được sử dụng trong kiểu TOC
cấp đầu tiên.
Cũng rất hữu ích khi lưu ý rằng bất kỳ định dạng trực tiếp nào của một đoạn văn (được xác định trên chính đoạn văn chứ không phải theo kiểu) được đánh dấu để đưa vào TOC
sẽ được sao chép trong mục trong TOC. Ví dụ: nếu kiểu Heading 1 được sử dụng để đánh dấu nội dung cho TOC
và kiểu này có Định dạng Đậm trong khi đoạn văn cũng có định dạng nghiêng được áp dụng trực tiếp cho nó. Mục TOC
kết quả sẽ không được in đậm vì đó là một phần của định dạng kiểu tuy nhiên nó sẽ được in nghiêng vì điều này được định dạng trực tiếp trên đoạn văn.
Bạn cũng có thể kiểm soát định dạng của các dấu phân cách được sử dụng giữa mỗi mục nhập và số trang. Theo mặc định, đây là một đường chấm chấm được trải rộng sang đánh số trang bằng cách sử dụng ký tự tab và dừng tab bên phải được xếp gần lề phải.
Sử dụng lớp Style
được truy xuất cho cấp TOC
cụ thể mà bạn muốn sửa đổi, bạn cũng có thể sửa đổi cách chúng xuất hiện trong tài liệu.
Để thay đổi cách điều này xuất hiện trước tiên Style.ParagraphFormat
phải được gọi để truy xuất định dạng đoạn văn cho kiểu. Từ đó, các điểm dừng tab có thể được truy xuất bằng cách gọi ParagraphFormat.TabStops
và tab thích hợp dừng sửa đổi. Sử dụng kỹ thuật tương tự này, bản thân tab có thể được di chuyển hoặc xóa hoàn toàn.
Ví dụ mã sau đây cho thấy cách sửa đổi vị trí của tab bên phải dừng trong các đoạn liên quan TOC
.
Xóa Một Mục Lục khỏi Tài liệu
Một mục lục có thể được xóa khỏi tài liệu bằng cách xóa tất cả các nút được tìm thấy giữa nút FieldStart
và FieldEnd của trường TOC
.
Mã dưới đây chứng minh điều này. Việc loại bỏ trường TOC
đơn giản hơn trường bình thường vì chúng tôi không theo dõi các trường lồng nhau. Thay vào đó, chúng tôi kiểm tra nút FieldEnd
thuộc loại FieldType.FieldTOC
có nghĩa là chúng tôi đã gặp phải phần cuối của TOC hiện tại. Kỹ thuật này có thể được sử dụng trong trường hợp này mà không phải lo lắng về bất kỳ trường lồng nhau nào vì chúng ta có thể giả định rằng bất kỳ tài liệu được hình thành đúng cách nào sẽ không có trường TOC
lồng nhau hoàn toàn bên trong trường TOC
khác.
Đầu tiên các nút FieldStart
của mỗi TOC
được thu thập và lưu trữ. TOC
được chỉ định sau đó được liệt kê để tất cả các nút trong trường được truy cập và lưu trữ. Các nút sau đó được xóa khỏi tài liệu. Ví dụ mã sau đây trình bày cách xóa TOC
được chỉ định khỏi tài liệu.
Trích Xuất Mục Lục
Nếu bạn muốn trích xuất một mục lục từ bất kỳ tài liệu Word nào, mẫu mã sau đây có thể được sử dụng.