עבודה עם טווחים ניתנים לעריכה
עבודה עם טווחים ניתנים לעריכה
מדריך זה מראה כיצד לבדוק ולהסיר טווחים ניתנים לעריכה – האזורים שתכונת “Restrict Editing” של Word מפחרת מההגבלה הכוללת של עריכת המסמך, באפשרותם להיות ממוקדים למשתמש או קבוצה ספציפיים – ב Aspose.Words FOSS עבור .NET. טווח ניתן לעריכה מוקף בעץ המסמך על ידי זוג של צמתים מסמנים, EditableRangeStart and EditableRangeEnd, ומתואר במלואו על ידי ה- EditableRange facade class.
מציאת טווחים ניתנים לעריכה במסמך
אין נכס אוסף יחיד לטווחים ניתנים לעריכה; מצאו אותם על-ידי הליכה בעץ הצמתים. CompositeNode.GetChildNodes(nodeType, isDeep) עם NodeType.EditableRangeStart מחזיר כל צומת EditableRangeStart במסמך (או בתת-עץ, אם נקרא על צומת שאינו Document). כל נכס EditableRangeStart.EditableRange לאחר מכן מחזיר את אובייקט ה-facade המתאים EditableRange.
ה-EditableRange Facade
EditableRange מתאר טווח יחיד שניתן לעריכה במלואו: Id מזהה אותו, SingleUser אופציונלית שם משתמש ספציפי המורשה לערוך אותו, ו-EditorGroup (ערך מסוג EditorType) אופציונלית שם קבוצת עריכה במקום זאת. EditableRangeStart ו-EditableRangeEnd מחזירים את זוג צמתי הסימון המעגלים את הטווח במסמך. EditableRange.Remove() מסיר את הטווח הניתן לעריכה – מבטל את פטור ההגבלה על עריכה עבור האזור הזה, מבלי למחוק את תוכן המסמך שבתוכו.
צמתי הסימון: EditableRangeStart ו-EditableRangeEnd
EditableRangeStart ו-EditableRangeEnd הם תתי-מחלקות Node חסומות המסמנות את גבולות הטווח בזרימת התוכן של המסמך. EditableRangeStart.Id ו-EditableRangeEnd.Id מזהים את הטווח; EditableRangeStart.EditableRange מגיע ישירות לאובייקט הפָּסָד, ו-EditableRangeEnd.EditableRangeStart חוזר לסמן ההתחלה המתאים. כצמתים רגילים, שניהם תומכים בחברי Node הסטנדרטיים – ParentNode, Document, PreviousSibling, NextSibling ו-Remove() למחיקת הסמן הפרטני.
הגבלת גישה באמצעות EditorType
EditorType מונה את קבוצות העריכה ש-EditableRange.EditorGroup יכול להתייחס אליהן: Administrators, Contributors, Editors, Owners, Everyone, Current, None ו-Unspecified (זמין גם כ-Default, שם נוסף ל-Unspecified).
טיפים ושיטות עבודה מומלצות
- השתמש ב-
GetChildNodes(NodeType.EditableRangeStart, true)יחד עםisDeep: trueכדי למצוא טווחים ניתנים לעריכה בכל מקום במסמך, ולא רק בין הצאצאים המיידיים של צומת. - קרא את
EditableRange.SingleUserו-EditorGroupיחד כדי לקבוע למי הטווח מוגבל — טווח יכול להיות מוגדר למשתמש ספציפי אחד, לקבוצת עריכה אחת, או לשום דבר. - קרא ל-
EditableRange.Remove()(על הפָּסָד) במקום להסיר את צמתי הסמןEditableRangeStartו-EditableRangeEndבנפרד, כך ששני קצות הטווח ינוקו באופן עקבי.
בעיות נפוצות
| בעיה | סיבה | תיקון |
|---|---|---|
| לא נמצאו טווחים ניתנים לעריכה למרות שהמסמך מוגבל לעריכה | החיפוש השתמש בקריאה ברירת המחדל (שטחי) של GetChildNodes | העבר isDeep: true כך שהחיפוש יכסה את כל תת-עץ המסמך |
| הסרת טווח עריכה אינה מסירה את הטקסט המוכלל | EditableRange.Remove() מסיר רק את סמני הטווח ואת פטור העריכה, ולא את התוכן שביניהם | זה צפוי – מחק את התוכן בנפרד אם הוא גם צריך להימחק |
EditorGroup נקרא כ-Unspecified למרות ש-Word מציג קבוצה בשם | קבוצת העורך של הטווח במסמך המקור ממופה ל-EditorType.Unspecified/Default במקום לאחת מערכי הקבוצות בשם | בדוק גם את SingleUser – הטווח עשוי במקום זאת להיות מוגבל למשתמש יחיד |
FAQ
איך אני מוצא את כל הטווחים הניתנים לעריכה במסמך?
הקרא ל-Document.GetChildNodes(NodeType.EditableRangeStart, true), ואז קרא את המאפיין EditableRange על כל צומת EditableRangeStart שהוחזר.
איך אני יודע מי מורשה לערוך טווח מסוים?
קרא את EditableRange.SingleUser (משתמש ספציפי) ואת EditableRange.EditorGroup (קבוצת עריכה של EditorType) על אובייקט הפאסאד.
איך אני מסיר הגבלת עריכה מחלק מהמסמך?
הקרא ל-Remove() על אובייקט הפאסאד EditableRange עבור הטווח הזה.
מה ההבדל בין EditableRangeStart.EditableRange ל-EditableRangeEnd.EditableRangeStart?
EditableRangeStart.EditableRange מגיע ישירות לאובייקט facade המתאר את כל הטווח. EditableRangeEnd.EditableRangeStart חוזר לצומת סימן התחלה המתאים, שממנו ניתן להגיע לEditableRange.
API Reference סיכום
| מחלקה / Enum | תיאור |
|---|---|
EditableRange | מתווה עבור טווח עריכה אחד: Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | צומת המסמן את תחילת הטווח; Id, EditableRange |
EditableRangeEnd | צומת המסמן את סוף הטווח; Id, EditableRangeStart |
EditorType | Enum של קבוצות עריכה: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |