کار با بازه‌های قابل ویرایش

کار با بازه‌های قابل ویرایش

کار با بازه‌های قابل ویرایش

این راهنما نشان می‌دهد چگونه بازه‌های قابل ویرایش را بررسی و حذف کنید – نواحی که ویژگی «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
EditorTypeenum گروه‌های ویرایشی: Administrators, Contributors, Editors, Owners, Everyone, Current, None, Unspecified/Default

همچنین ببینید:

 فارسی