کار با متن
کار با متن
متن در یک سند 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 | کنترل میکند که آیا و چگونه یک پاراگراف در یک فهرست شرکت میکند. |