Khối xây dựng
Các khối xây dựng
Hướng dẫn này cho thấy cách đọc và sửa đổi các khối nội dung có thể tái sử dụng được lưu trữ trong tài liệu glossary của tài liệu với Aspose.Words FOSS cho .NET. Thư viện cung cấp các mục AutoText, trang bìa, đầu trang, chân trang và các nội dung định trước tương tự thông qua Document.GlossaryDocument và mô hình đối tượng BuildingBlock/BuildingBlockCollection.
Tài liệu Thuật ngữ
Mỗi Document chứa một GlossaryDocument — có thể truy cập qua Document.GlossaryDocument — mà bản thân nó là một lớp con DocumentBase chứa các khối xây dựng. Thuộc tính BuildingBlocks của nó trả về một BuildingBlockCollection, với FirstBuildingBlock/LastBuildingBlock cung cấp truy cập nhanh tới các cuối của danh sách. Tìm kiếm một khối xây dựng cụ thể bằng GetBuildingBlock(gallery, category, name), khớp với BuildingBlockGallery, chuỗi danh mục và tên cùng nhau.
Cấu trúc Khối xây dựng
BuildingBlock là một CompositeNode, vì vậy nó chứa cây nội dung riêng — Sections (một SectionCollection), FirstSection, và LastSection — giống như một Document chứa các phần. Các thuộc tính siêu dữ liệu của nó xác định và phân loại nó: Name, Guid, Description, Category, Gallery (một BuildingBlockGallery — AutoText, CoverPage, Headers, Footers, Tables, Watermarks, và hàng chục bộ sưu tập định trước khác), Type (một BuildingBlockType), và Behavior (một BuildingBlockBehavior của Content, Paragraph, hoặc Page) kiểm soát cách nội dung của nó được hợp nhất vào tài liệu khi được chèn.
Quản lý Bộ sưu tập Khối xây dựng
BuildingBlockCollection hỗ trợ chỉnh sửa toàn bộ bộ sưu tập: Add(node), Insert(index, node), Remove(node), RemoveAt(index), Clear(), Contains(node), và IndexOf(node), cùng với ToArray() và GetEnumerator() để đọc. Vì nó là một NodeCollection, các khối xây dựng có thể được tạo, sao chép và di chuyển bằng cùng các API nút như bất kỳ phần nào khác của cây tài liệu.
Các khối xây dựng văn bản placeholder
Các thẻ tài liệu có cấu trúc có thể tham chiếu đến một khối xây dựng làm nội dung placeholder của chúng: StructuredDocumentTag.Placeholder và StructuredDocumentTagRangeStart.Placeholder đều trả về BuildingBlock được hiển thị khi thẻ trống, thông qua thuộc tính IStructuredDocumentTag.Placeholder chung.
Mẹo và Thực hành Tốt nhất
- Khớp ba đối số của
GetBuildingBlock(gallery, category, name)một cách cẩn thận — cùng một tên có thể tồn tại trong các bộ sưu tập hoặc danh mục khác nhau. - Sử dụng
BuildingBlockGalleryđể lọc loại nội dung tái sử dụng bạn đang tìm kiếm (AutoText,CoverPage,Tables,Watermarks, v.v.) thay vì chỉ quét từng khối xây dựng theo tên. BuildingBlockBehaviorxác định cách nội dung được chèn hợp nhất với tài liệu xung quanh (Content,Paragraph, hoặcPage) — hãy kiểm tra nó trước khi cho rằng một khối xây dựng sẽ chèn theo cách bạn mong đợi.- Vì
BuildingBlocklà mộtCompositeNode, hãy coi nó giống như bất kỳ nhánh nút con nào khác khi xây dựng hoặc chỉnh sửa nội dung của nó —AppendChild,InsertAfter, và các phương thức nút tương tự đều áp dụng.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
GetBuildingBlock() không trả về gì | Thư viện, danh mục hoặc tên không khớp chính xác với một khối xây dựng hiện có | Liệt kê GlossaryDocument.BuildingBlocks để tìm kết hợp Gallery/Category/Name chính xác |
| Nội dung khối xây dựng được chèn hợp nhất một cách bất ngờ | Behavior (Content/Paragraph/Page) không được tính đến | Kiểm tra BuildingBlock.Behavior trước khi chèn để hiểu cách nó sẽ được hợp nhất |
| Trình giữ chỗ thẻ tài liệu có cấu trúc không hiển thị nội dung mong đợi | Placeholder chỉ tới một BuildingBlock khác so với giả định | Đọc StructuredDocumentTag.Placeholder để xác nhận khối xây dựng nào thực sự được tham chiếu |
FAQ
Các khối xây dựng được lưu trữ ở đâu trong tài liệu?
Trong GlossaryDocument của tài liệu, có thể truy cập qua Document.GlossaryDocument, mà thuộc tính BuildingBlocks của nó là một BuildingBlockCollection.
Làm thế nào để tôi tìm một khối xây dựng cụ thể, chẳng hạn như mục AutoText?
Gọi GlossaryDocument.GetBuildingBlock(gallery, category, name) với BuildingBlockGallery phù hợp, danh mục và tên.
Tôi có thể thêm các khối xây dựng mới bằng chương trình không?
Có — BuildingBlockCollection hỗ trợ Add(node) và Insert(index, node) vì nó là một NodeCollection.
BuildingBlockBehavior kiểm soát gì?
Cách nội dung khối xây dựng được hợp nhất vào tài liệu khi chèn — dưới dạng Content, một Paragraph toàn bộ, hoặc một Page toàn bộ.
Khối xây dựng liên quan như thế nào đến văn bản giữ chỗ của thẻ tài liệu có cấu trúc?
StructuredDocumentTag.Placeholder (và StructuredDocumentTagRangeStart.Placeholder) trả về BuildingBlock cung cấp nội dung giữ chỗ của SDT khi nó trống.
API Reference Tóm tắt
| Lớp / Phương thức | Mô tả |
|---|---|
Document.GlossaryDocument | GlossaryDocument của tài liệu, chứa tất cả các khối xây dựng |
GlossaryDocument.BuildingBlocks | BuildingBlockCollection của mọi khối xây dựng |
GlossaryDocument.GetBuildingBlock() | Tra cứu một khối xây dựng theo bộ sưu tập, danh mục và tên |
BuildingBlock | Một CompositeNode với Name, Gallery, Category, Behavior, Type, Sections |
BuildingBlockCollection | Add(), Insert(), Remove(), Clear(), Contains(), IndexOf() |
BuildingBlockGallery / BuildingBlockType / BuildingBlockBehavior | Các enum phân loại một khối xây dựng |
StructuredDocumentTag.Placeholder | The BuildingBlock được sử dụng làm nội dung placeholder của SDT |