کار با بازههای قابل ویرایش
کار با بازههای قابل ویرایش
این راهنما نشان میدهد چگونه بازههای قابل ویرایش را بررسی و حذف کنید – نواحی که ویژگی «Restrict Editing» ورد از محدودیت کلی ویرایش سند استثنا میکند، بهصورت اختیاری برای کاربر یا گروه خاصی محدود میشود – در Aspose.Words FOSS برای .NET. یک بازه قابل ویرایش در درخت سند توسط یک جفت گره علامتگذاریکننده محصور میشود، EditableRangeStart and EditableRangeEnd، و بهصورت کلی توسط EditableRange کلاس واسط.
یافتن بازههای قابل ویرایش در یک سند
هیچ ویژگی مجموعهٔ واحدی برای بازههای قابل ویرایش وجود ندارد؛ آنها را با پیمایش درخت گره پیدا کنید. CompositeNode.GetChildNodes(nodeType, isDeep) با NodeType.EditableRangeStart همهٔ گرههای EditableRangeStart را در سند (یا در یک زیردرخت، اگر روی گرهای غیر از Document فراخوانی شود) برمیگرداند. هر ویژگی EditableRangeStart.EditableRange سپس شیء facade EditableRange مربوطه را برمیگرداند.
فاساد EditableRange
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را بهصورت ترکیبی بخوانید تا تعیین کنید بازه به چه کسی محدود شده است — یک بازه میتواند برای یک کاربر خاص، یک گروه ویرایشی، یا هیچیک محدود شود. - به جای حذف گرههای نشانگر
EditableRangeStartوEditableRangeEndبهصورت جداگانه،EditableRange.Remove()(در واسط) را فراخوانی کنید تا هر دو سر بازه بهطور یکسان پاک شوند.
مشکلات رایج
| مسئله | دلیل | رفع |
|---|---|---|
| هیچ بازه قابل ویرایشی یافت نشد حتی اگر سند دارای ویرایش محدود باشد | جستجو از فراخوانی پیشفرض (سطحی) 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 بهصورت مستقیم به شیء façade که کل بازه را توصیف میکند دست مییابد. EditableRangeEnd.EditableRangeStart به گرهٔ علامت شروع مربوطه برمیگردد، که از آن EditableRange میتواند سپس دسترسی پیدا کند.
API Reference خلاصه
| کلاس / شمارش | توضیح |
|---|---|
EditableRange | رابط برای یک بازه قابل ویرایش: Id, SingleUser, EditorGroup, Remove() |
EditableRangeStart | گرهای که شروع یک بازه را علامتگذاری میکند؛ Id, EditableRange |
EditableRangeEnd | گرهای که پایان یک بازه را علامتگذاری میکند؛ Id, EditableRangeStart |
EditorType | enum گروههای ویرایشی: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default |