Bekerja dengan Rentang yang Dapat Diedit
Bekerja dengan Rentang yang Dapat Diedit
Panduan ini menunjukkan cara memeriksa dan menghapus rentang yang dapat diedit – wilayah yang dikecualikan oleh fitur “Restrict Editing” Word dari pembatasan penyuntingan keseluruhan dokumen, secara opsional ditetapkan untuk pengguna atau grup tertentu – dalam Aspose.Words FOSS untuk .NET. Sebuah rentang yang dapat diedit dibatasi dalam pohon dokumen oleh sepasang node penanda, EditableRangeStart and EditableRangeEnd, dan dijelaskan secara keseluruhan oleh EditableRange kelas facade.
Menemukan Rentang yang Dapat Diedit dalam Dokumen
Tidak ada properti koleksi tunggal untuk rentang yang dapat diedit; temukan mereka dengan menelusuri pohon node. CompositeNode.GetChildNodes(nodeType, isDeep) dengan NodeType.EditableRangeStart mengembalikan setiap node EditableRangeStart dalam dokumen (atau dalam subtree, jika dipanggil pada node selain Document). Setiap properti EditableRangeStart.EditableRange kemudian mengembalikan objek fasad EditableRange yang sesuai.
Fasad EditableRange
EditableRange menggambarkan satu rentang yang dapat diedit secara keseluruhan: Id mengidentifikasinya, SingleUser secara opsional memberi nama pengguna spesifik yang diizinkan mengeditnya, dan EditorGroup (sebuah nilai EditorType) secara opsional memberi nama grup penyuntingan sebagai gantinya. EditableRangeStart dan EditableRangeEnd mengembalikan pasangan node penanda yang membatasi rentang dalam dokumen. EditableRange.Remove() menghapus rentang yang dapat diedit – mengangkat pengecualian pembatasan penyuntingan untuk wilayah tersebut, tanpa menghapus konten dokumen di dalamnya.
Node Penanda: EditableRangeStart dan EditableRangeEnd
EditableRangeStart dan EditableRangeEnd adalah subclass Node yang disegel yang menandai batas rentang dalam alur konten dokumen. EditableRangeStart.Id dan EditableRangeEnd.Id mengidentifikasi rentang; EditableRangeStart.EditableRange mencapai objek fasad secara langsung, dan EditableRangeEnd.EditableRangeStart kembali ke penanda awal yang sesuai. Sebagai node biasa, keduanya mendukung anggota standar Node – ParentNode, Document, PreviousSibling, NextSibling, dan Remove() untuk menghapus penanda individu.
Membatasi Akses dengan EditorType
EditorType menyebutkan grup pengeditan yang dapat dirujuk oleh EditableRange.EditorGroup: Administrators, Contributors, Editors, Owners, Everyone, Current, None, dan Unspecified (juga tersedia sebagai Default, alias untuk Unspecified).
Tips dan Praktik Terbaik
- Gunakan
GetChildNodes(NodeType.EditableRangeStart, true)denganisDeep: trueuntuk menemukan rentang yang dapat diedit di mana saja dalam dokumen, tidak hanya di antara anak langsung sebuah node. - Baca
EditableRange.SingleUserdanEditorGroupbersama-sama untuk menentukan kepada siapa rentang dibatasi – sebuah rentang dapat dibatasi untuk satu pengguna spesifik, satu grup pengeditan, atau tidak ada sama sekali. - Panggil
EditableRange.Remove()(pada fasad) daripada menghapus node penandaEditableRangeStartdanEditableRangeEndsecara terpisah, sehingga kedua ujung rentang dibersihkan secara konsisten.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
| Tidak ada rentang yang dapat diedit ditemukan meskipun dokumen memiliki penyuntingan terbatas | Pencarian menggunakan panggilan default (dangkal) GetChildNodes | Berikan isDeep: true sehingga pencarian mencakup seluruh subtree dokumen |
| Menghapus rentang yang dapat diedit tidak menghapus teks yang terbungkus | EditableRange.Remove() hanya menghapus penanda rentang dan pengecualian penyuntingan, bukan konten di antara keduanya | Ini diharapkan – hapus kontennya secara terpisah jika juga perlu dihapus |
EditorGroup terbaca sebagai Unspecified meskipun Word menampilkan grup bernama | Grup penyunting rentang dalam dokumen sumber dipetakan ke EditorType.Unspecified/Default alih-alih salah satu nilai grup bernama | Periksa SingleUser juga – rentang mungkin justru dibatasi untuk pengguna individu |
FAQ
Bagaimana cara menemukan semua rentang yang dapat diedit dalam sebuah dokumen?
Panggil Document.GetChildNodes(NodeType.EditableRangeStart, true), kemudian baca properti EditableRange pada setiap node EditableRangeStart yang dikembalikan.
Bagaimana saya mengetahui siapa yang diizinkan mengedit rentang tertentu?
Baca EditableRange.SingleUser (seorang pengguna spesifik) dan EditableRange.EditorGroup (sebuah grup penyunting EditorType) pada objek facade.
Bagaimana cara menghapus pembatasan penyuntingan dari bagian dokumen?
Panggil Remove() pada objek facade EditableRange untuk rentang tersebut.
Apa perbedaan antara EditableRangeStart.EditableRange dan EditableRangeEnd.EditableRangeStart?
EditableRangeStart.EditableRange mencapai objek fasad yang mendeskripsikan seluruh rentang secara langsung. EditableRangeEnd.EditableRangeStart kembali ke node penanda awal yang sesuai, dari mana EditableRange kemudian dapat dicapai.
API Reference Ringkasan
| Kelas / Enum | Deskripsi |
|---|---|
EditableRange | Fasad untuk satu rentang yang dapat diedit: Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | Node yang menandai awal rentang; Id, EditableRange |
EditableRangeEnd | Node yang menandai akhir rentang; Id, EditableRangeStart |
EditorType | Enum grup penyuntingan: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |