Làm việc với Phạm vi có thể chỉnh sửa
Làm việc với Các Phạm vi Có thể chỉnh sửa
Hướng dẫn này chỉ ra cách kiểm tra và xóa các phạm vi có thể chỉnh sửa – các vùng mà tính năng “Restrict Editing” của Word loại trừ khỏi hạn chế chỉnh sửa chung của tài liệu, có thể được giới hạn cho một người dùng hoặc nhóm cụ thể – trong Aspose.Words FOSS cho .NET. Một phạm vi có thể chỉnh sửa được bao quanh trong cây tài liệu bởi một cặp nút đánh dấu, EditableRangeStart and EditableRangeEnd, và được mô tả toàn bộ bởi EditableRange lớp giao diện.
Tìm kiếm Các Phạm vi Có thể chỉnh sửa trong Tài liệu
Không có thuộc tính bộ sưu tập duy nhất cho các phạm vi có thể chỉnh sửa; hãy tìm chúng bằng cách duyệt cây nút. CompositeNode.GetChildNodes(nodeType, isDeep) với NodeType.EditableRangeStart trả về mọi nút EditableRangeStart trong tài liệu (hoặc trong một nhánh con, nếu được gọi trên một nút khác Document). Mỗi thuộc tính EditableRangeStart.EditableRange sau đó trả về đối tượng mặt nạ EditableRange tương ứng.
Lớp mặt nạ EditableRange
EditableRange mô tả một phạm vi có thể chỉnh sửa duy nhất như một toàn thể: Id xác định nó, SingleUser tùy chọn đặt tên cho người dùng cụ thể được phép chỉnh sửa, và EditorGroup (một giá trị EditorType) tùy chọn đặt tên cho một nhóm chỉnh sửa thay thế. EditableRangeStart và EditableRangeEnd trả về cặp nút đánh dấu bao quanh phạm vi trong tài liệu. EditableRange.Remove() xóa phạm vi có thể chỉnh sửa – loại bỏ việc miễn trừ hạn chế chỉnh sửa cho vùng đó, mà không xóa nội dung tài liệu bên trong.
Các nút đánh dấu: EditableRangeStart và EditableRangeEnd
EditableRangeStart và EditableRangeEnd là các lớp con Node được đóng kín, đánh dấu ranh giới của một phạm vi trong luồng nội dung của tài liệu. EditableRangeStart.Id và EditableRangeEnd.Id xác định phạm vi; EditableRangeStart.EditableRange tiếp cận đối tượng facade trực tiếp, và EditableRangeEnd.EditableRangeStart quay lại tới dấu bắt đầu tương ứng. Là các nút thông thường, cả hai đều hỗ trợ các thành viên chuẩn Node — ParentNode, Document, PreviousSibling, NextSibling, và Remove() để xóa dấu riêng lẻ.
Hạn chế quyền truy cập với EditorType
EditorType liệt kê các nhóm chỉnh sửa mà một EditableRange.EditorGroup có thể tham chiếu: Administrators, Contributors, Editors, Owners, Everyone, Current, None, và Unspecified (cũng khả dụng dưới dạng Default, một bí danh cho Unspecified).
Mẹo và Thực hành Tốt nhất
- Sử dụng
GetChildNodes(NodeType.EditableRangeStart, true)cùng vớiisDeep: trueđể tìm các phạm vi có thể chỉnh sửa ở bất kỳ đâu trong tài liệu, không chỉ trong các nút con trực tiếp của một nút. - Đọc
EditableRange.SingleUservàEditorGroupcùng nhau để xác định phạm vi bị hạn chế cho ai — một phạm vi có thể được giới hạn cho một người dùng cụ thể, một nhóm chỉnh sửa, hoặc không giới hạn nào. - Gọi
EditableRange.Remove()(trên facade) thay vì xóa các nút đánh dấuEditableRangeStartvàEditableRangeEndriêng lẻ, để cả hai đầu của phạm vi được làm sạch một cách nhất quán.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
| Không tìm thấy phạm vi có thể chỉnh sửa dù tài liệu đã được giới hạn chỉnh sửa | Tìm kiếm đã sử dụng lời gọi GetChildNodes mặc định (nông) | Truyền isDeep: true để tìm kiếm bao phủ toàn bộ cây con của tài liệu |
| Xóa một phạm vi có thể chỉnh sửa không xóa bỏ văn bản nằm trong đó | EditableRange.Remove() chỉ xóa các dấu đánh dấu phạm vi và ngoại lệ chỉnh sửa, không xóa nội dung ở giữa chúng | Điều này là mong đợi – hãy xóa nội dung riêng biệt nếu nó cũng cần được loại bỏ |
EditorGroup hiển thị là Unspecified mặc dù Word hiển thị một nhóm được đặt tên | Nhóm biên tập của phạm vi trong tài liệu nguồn ánh xạ tới EditorType.Unspecified/Default thay vì một trong các giá trị của nhóm được đặt tên | Kiểm tra SingleUser nữa – phạm vi có thể được giới hạn cho một người dùng riêng lẻ |
FAQ
Làm thế nào để tôi tìm tất cả các phạm vi có thể chỉnh sửa trong một tài liệu?
Gọi Document.GetChildNodes(NodeType.EditableRangeStart, true), sau đó đọc thuộc tính EditableRange trên mỗi nút EditableRangeStart được trả về.
Làm sao để tôi biết ai được phép chỉnh sửa một phạm vi nhất định?
Đọc EditableRange.SingleUser (một người dùng cụ thể) và EditableRange.EditorGroup (một nhóm chỉnh sửa EditorType) trên đối tượng facade.
Làm thế nào để tôi loại bỏ hạn chế chỉnh sửa khỏi một phần của tài liệu?
Gọi Remove() trên đối tượng facade EditableRange cho phạm vi đó.
Sự khác nhau giữa EditableRangeStart.EditableRange và EditableRangeEnd.EditableRangeStart là gì?
EditableRangeStart.EditableRange tiếp cận đối tượng facade mô tả toàn bộ phạm vi một cách trực tiếp. EditableRangeEnd.EditableRangeStart quay lại nút đánh dấu bắt đầu tương ứng, từ đó EditableRange có thể được truy cập.
API Reference Tóm tắt
| Lớp / Enum | Mô tả |
|---|---|
EditableRange | Giao diện cho một phạm vi có thể chỉnh sửa: Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | Nút đánh dấu đầu của một phạm vi; Id, EditableRange |
EditableRangeEnd | Nút đánh dấu cuối của một phạm vi; Id, EditableRangeStart |
EditorType | Enum các nhóm chỉnh sửa: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |