کار با متن

کار با متن

متن در یک سند Word به صورت گره‌های Run (کاراکترهای پیوسته‌ای که یک قالب قلم یکسان دارند) که داخل گره‌های Paragraph گروه‌بندی شده‌اند، سازماندهی می‌شود. Aspose.Words FOSS برای .NET هر دو را به‌صورت مستقیم در دسترس می‌گذارد، همراه با Font برای قالب‌بندی کاراکتر، ParagraphFormat برای قالب‌بندی در سطح پاراگراف، و Range برای خواندن یا جایگزینی متن در هر بخشی از درخت. این راهنما شامل ران‌ها و قلم‌ها، قالب‌بندی پاراگراف، خواندن و جایگزینی متن، نظرات، و قالب‌بندی فهرست در سطح پاراگراف است.


ران‌ها و قالب‌بندی کاراکتر

یک Run بازه‌ای از متن را نشان می‌دهد که یک مجموعه قالب‌بندی مشترک دارند؛ ویژگی Text آن محتوای متنی ساده را نگه می‌دارد و ویژگی Font آن (یک شیء Font) قالب‌بندی سطح کاراکتر را شامل می‌شود — Name، Size، Bold، Italic، Underline، Color، HighlightColor، Subscript/Superscript، StrikeThrough و موارد بسیار دیگر. Font.ClearFormatting() قلم یک ران را به پیش‌فرض‌ها بازنشانی می‌کند. ران‌های یک پاراگراف از طریق ویژگی Runs آن، یک RunCollection، در دسترس هستند.


پاراگراف‌ها و قالب‌بندی پاراگراف

Paragraph یک گره ترکیبی است که ران‌ها (و سایر محتوای درون‌خطی) یک پاراگراف را شامل می‌شود؛ پاراگراف‌های یک سند یا بدنه به صورت ParagraphCollection (Body.Paragraphs) در دسترس هستند. Paragraph.ParagraphFormat (یک شیء ParagraphFormat) چیدمان در سطح پاراگراف را کنترل می‌کند — Alignment، تو رفتگی‌ها (LeftIndent، RightIndent، FirstLineIndent)، فاصله‌ها (SpaceBefore، SpaceAfter، LineSpacing، LineSpacingRule)، و رفتار صفحه‌بندی (KeepTogether، KeepWithNext، PageBreakBefore، WidowControl). ParagraphFormat.ClearFormatting() این موارد را به پیش‌فرض‌ها بازمی‌گرداند، و Paragraph.JoinRunsWithSameFormatting() ران‌های مجاور که قالب‌بندی یکسانی دارند را ادغام می‌کند.


خواندن و جایگزینی متن با Range

هر گره‌ای که محتوا دارد — یک Document، Section، Paragraph یا Run — یک Range را افشا می‌کند. Range.Text متن ساده تمام موارد داخل آن بازه را برمی‌گرداند و Range.Replace(pattern, replacement) یک جستجو و جایگزینی انجام می‌دهد که فقط به آن بازه محدود است، بنابراین می‌توانید به عنوان مثال متن داخل یک پاراگراف را بدون دست‌کاری بقیه سند جایگزین کنید. Range.Delete() محتویات بازه را به‌طور کامل حذف می‌کند.


Comments

یک گره Comment یک نظر را به موقعیتی در متن می‌چسباند؛ یکی را با new Comment(doc, author, initial, dateTime) بسازید و متن بدنه آن را با SetText(text) تنظیم کنید، سپس مانند هر گره دیگری آن را به سند وارد کنید. Comment.AddReply(author, initial, dateTime, text) یک پاسخ زنجیره‌ای می‌افزاید، و RemoveReply(reply) / RemoveAllReplies() آن‌ها را حذف می‌کنند. نظرات یک سند در یک CommentCollection جمع‌آوری می‌شوند.


قالب‌بندی فهرست در سطح پاراگراف

Paragraph.ListFormat (یک شیء ListFormat) گزارش می‌دهد و کنترل می‌کند که آیا یک پاراگراف بخشی از فهرست است یا نه: IsListItem و ListLevelNumber وضعیت فعلی آن را گزارش می‌دهند، ApplyBulletDefault() و ApplyNumberDefault() پاراگراف را به یک مورد فهرست بولت‌دار یا عددی پیش‌فرض تبدیل می‌کنند، ListIndent() / ListOutdent() سطح تو در توی فهرست آن را تغییر می‌دهند، و RemoveNumbers() آن را به یک پاراگراف معمولی برمی‌گرداند.


نکات و بهترین روش‌ها

  • ویژگی‌های قلم را روی DocumentBuilder.Font قبل از نوشتن متن با سازنده تنظیم کنید، نه اینکه ابتدا متن را بنویسید و سپس پس از آن اشیاء Run را به‌صورت جداگانه قالب‌بندی کنید.
  • دسترس Range.Replace را به کوچک‌ترین بازه‌ای که آنچه واقعا می‌خواهید تغییر یابد را پوشش می‌دهد محدود کنید — به‌جای کل سند، آن را بر روی بازهٔ یک Paragraph یا Section فراخوانی کنید وقتی که تغییر نباید به‌صورت سراسری در تمام سند اعمال شود.
  • پس از یک سری ویرایش‌های برنامه‌نویسی، Paragraph.JoinRunsWithSameFormatting() را فراخوانی کنید تا از ساختار اجراهای غیرضروری تکه‌تکه جلوگیری شود.
  • به جای ساخت تعریف‌های لیست به‌صورت دستی وقتی پیش‌فرض‌های داخلی کافی هستند، از ListFormat.ApplyBulletDefault() / ApplyNumberDefault() برای یک لیست پیش‌فرض سریع استفاده کنید.
  • نتایج Comment.AddReply را به‌عنوان گره‌های Comment بخوانید — پاسخ‌ها اشیاء کامل نظر هستند، نه رشته‌های ساده.

مسائل رایج

مسألهدلیلرفع
قالب‌بندی Font یک Run تغییری بصری در متن مجاور ایجاد نمی‌کندمتن مجاور در یک Run متفاوت با نمونهٔ Font خود قرار داردهر Run تحت تأثیر را پیدا کنید و قالب‌بندی کنید، یا قبل از نوشتن قالب‌بندی را از طریق DocumentBuilder.Font تنظیم کنید
Range.Replace متن را خارج از ناحیهٔ مورد نظر تغییر می‌دهدReplace بر روی Document.Range فراخوانی شد به‌جای بازهٔ یک گرهٔ باریک‌ترفراخوانی Replace روی Paragraph خاص، Section یا Range گره دیگر
یک پاراگراف شبیه یک مورد لیست به نظر می‌رسد اما IsListItem نادرست استنقطه/شماره به صورت متن دستی است، نه قالب‌بندی واقعی لیستقالب‌بندی واقعی لیست را با ListFormat.ApplyBulletDefault() یا ApplyNumberDefault() به‌جای کاراکترهای تایپ‌شده اعمال کنید
سند دارای گره‌های Run بسیار بیشتری نسبت به انتظار استویرایش‌های کوچک مکرر، دنباله‌ها را بدون پیوند مجددشان تقسیم می‌کندپس از دسته‌های ویرایش، Paragraph.JoinRunsWithSameFormatting() را فراخوانی کنید

FAQ

تفاوت Run و Paragraph چیست؟

یک Run بازه‌ای از متن است که یک مجموعه قالب‌بندی کاراکتری (Font) مشترک دارد؛ یک Paragraph گرهٔ ترکیبی است که یک یا چند اجرا (و سایر محتوای درون‌خطی) به‌همراه قالب‌بندی سطح پاراگراف (ParagraphFormat) را شامل می‌شود.

چگونه می‌توانم تمام متن موجود در یک سند یا بخش را بخوانم؟

مقدار ویژگی Text آن گرهٔ Range را بخوانید — برای مثال، document.Range.Text یا section.Range.Text.

چگونه می‌توانم متن را فقط در یک پاراگراف پیدا کرده و جایگزین کنم؟

به جای فراخوانی Replace(pattern, replacement) بر Document.Range، Replace(pattern, replacement) را بر Paragraph’s Range صدا بزنید.

چگونه می‌توانم یک نظر به سند اضافه کنم؟

آن را با new Comment(doc, author, initial, dateTime) ایجاد کنید، متن آن را با SetText(text) تنظیم کنید و در درخت وارد کنید؛ با Comment.AddReply(author, initial, dateTime, text) به آن پاسخ دهید.

چگونه یک پاراگراف را به یک مورد لیست بولت‌دار تبدیل کنم؟

به ApplyBulletDefault() بر ListFormat آن پاراگراف صدا بزنید؛ به جای آن از ApplyNumberDefault() برای لیست شماره‌دار استفاده کنید.


خلاصه API Reference

کلاس/متدتوضیح
Runیک بازهٔ متنی که یک مجموعهٔ قالب‌بندی کاراکتری مشترک دارد.
Fontقالب‌بندی سطح کاراکتر — نام، اندازه، بولد، ایتالیک، رنگ و موارد دیگر.
Paragraphگرهٔ ترکیبی شامل رون‌ها و قالب‌بندی یک پاراگراف.
ParagraphFormatقالب‌بندی سطح پاراگراف — تراز، تورفتگی‌ها، فاصله‌گذاری، صفحه‌بندی.
ParagraphCollectionمجموعهٔ تایپ‌شدهٔ گره‌های Paragraph، مثلا Body.Paragraphs.
Rangeیک ناحیه پیوسته از سند؛ از Text، Replace و Delete پشتیبانی می‌کند.
Commentیک نظر رشته‌ای که به موقعیتی در متن متصل است.
CommentCollectionمجموعه نظرات سند.
ListFormatکنترل می‌کند که آیا و چگونه یک پاراگراف در یک فهرست شرکت می‌کند.

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

 فارسی