کار با بخشها
کار با بخشها
یک سند Word به یک یا چند بخش تقسیم میشود، که هر کدام تنظیمات صفحه، حاشیهها، سرصفحهها و پاورقیهای خود را دارند. Aspose.Words FOSS برای .NET یک بخش را به عنوان یک Section گره، شامل یک Body و، بهصورت اختیاری، سرصفحهها و پاورقیها، بهعلاوه یک PageSetup که چینش آن را کنترل میکند. این صفحه مدل شیء بخش، تنظیمات صفحه، سرصفحهها و پاورقیها، و چیدمان متن چندستونی را پوشش میدهد.
مدل شیء بخش
Document.Sections یک SectionCollection برمیگرداند – هر Section در سند، که هر یک یک CompositeNode و بخشی از درخت گره هستند. یک Section شامل یک Body است (یک Story که پاراگرافها و جدولهای اصلی بخش را در بر دارد) و، در صورت وجود، گرههای HeaderFooter که از طریق Section.HeadersFooters قابل دسترسی هستند، یک HeaderFooterCollection. Document.FirstSection و Document.LastSection دسترسی مستقیم به بخشهای مرزی را فراهم میکنند. Section.AppendContent()، PrependContent() و ClearContent() محتوای بدنهٔ یک بخش را بهصورت دستهای دستکاری میکنند، در حالی که ClearHeadersFooters() و DeleteHeaderFooterShapes() محتوای سرصفحه/پاورقی را پاک میکنند.
ایجاد بخشها و شکستهای بخش
DocumentBuilder.InsertBreak(BreakType) یک شکست را در مکاننما وارد میکند؛ BreakType شامل SectionBreakNewPage، SectionBreakContinuous، SectionBreakNewColumn، SectionBreakEvenPage و SectionBreakOddPage برای شروع یک بخش جدید میشود، همراه با مقادیر غیربخشی PageBreak، ColumnBreak، LineBreak و ParagraphBreak. DocumentBuilder.MoveToSection() مکاننما را به ابتدای بدنهٔ یک بخش خاص منتقل میکند. PageSetup.SectionStart نوع شکست SectionStart ثبتشده بر روی یک بخش موجود را میخواند یا تنظیم میکند.
تنظیمات صفحه
Section.PageSetup یک نمونه PageSetup است که ابعاد صفحه و حاشیهها (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter)، Orientation و PaperSize، و حاشیههای صفحه به ازای هر طرف (Borders, BorderAppliesTo از طریق PageBorderAppliesTo, BorderDistanceFrom از طریق PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter) را پوشش میدهد. شمارهگذاری خطوط توسط LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText و LineStartingNumber کنترل میشود. PageSetup.ClearFormatting() آن را به پیشفرضها بازنشانی میکند.
سرصفحهها و پاورقیها
Section.HeadersFooters یک HeaderFooterCollection با دسترسیگرهای تایپشده است – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – بههمراه GetByHeaderFooterType(), Add() و LinkToPrevious(). هر HeaderFooter یک Story (مانند Body) است که توسط HeaderFooterType شناسایی میشود و با برچسب IsHeader / IsLinkedToPrevious علامتگذاری شده است. PageSetup.DifferentFirstPageHeaderFooter و PageSetup.OddAndEvenPagesHeaderFooter تعیین میکنند که آیا Word انتظار دارد انواع سرصفحه/پاورقی صفحه اول و صفحه زوج استفاده شوند یا خیر.
ستونهای متن چندگانه
PageSetup.TextColumns یک TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) برمیگرداند که با SetCount() بخش بدنه را در چندین ستون چیدمان میکند. ستونهای منفرد نمونههای TextColumn هستند (Width, SpaceAfter) زمانی که مجموعه با بیش از یک ستون پر شود.
نکات و بهترین شیوهها
- یک شکست بخش قالببندی را برای بخشی که follows آن – تنظیم
PageSetupویژگیها بر روی یکSectionشما بهتازگی ایجاد کردید (بعدInsertBreak) بر محتوا که پس از شکست میآید تأثیر میگذارد، نه قبل از آن. - از
SectionBreakContinuousزمانی استفاده کنید که فقط به تغییری در تنظیمات صفحه نیاز دارید (مثلاً، تغییر به متن چندستونی) بدون شروع صفحه جدید؛ ازSectionBreakNewPageوقتی استفاده کنید که بخش جدید باید همیشه در صفحهای تازه آغاز شود. HeaderFooterCollection.LinkToPrevious()سرآیند/پاورقی یک بخش را دوباره وصل میکند تا محتوای بخش قبلی را به ارث ببرد – این کار را قبل از نوشتن محتوای جدید سرآیند/پاورقی انجام دهید اگر میخواهید بخش جدید بهصورت مستقل از بخش قبل شروع شود.PageSetup.DifferentFirstPageHeaderFooterوOddAndEvenPagesHeaderFooterفقط زمانی مؤثر میشوند که انواع مربوط بهHeaderFooterType(HeaderFirst،HeaderEvenو غیره) واقعاً درSection.HeadersFootersوجود داشته باشند – پرچم را فعال کنید و سرآیند/پاورقی مربوطه را با هم اضافه کنید.Section.Bodyو هرHeaderFooterنمونههای جداگانهای ازStoryهستند –Range.Fields، نشانکها و سایر عملیاتهای محدودهای رویBodyبخش بهصورت خودکار به سرآیندها و پاورقیهای آن دسترسی ندارند.
مشکلات رایج
| مسئله | دلیل | رفع |
|---|---|---|
| تنظیمات صفحه بخش جدید با آنچه من تنظیم کردهام مطابقت ندارد | PageSetup روی نمونهٔ نادرست Section تنظیم شد | تنظیم PageSetup در بخشی که follows وقف، نه قبلی آن |
| محتواى سرصفحه/پاصفحه از بخش قبلی بهطور غیرمنتظره در بخش جدید ظاهر میشود | سرصفحهها/پاورقیهای بخش جدید هنوز به بخش قبلی متصل هستند | متد HeaderFooterCollection.LinkToPrevious(false) را فراخوانی کنید (یا محتویات متمایز سرصفحه/پاورقی اضافه کنید) تا آنها را جدا کنید |
| سرصفحه/پاورقی صفحه اول یا صفحه زوج نادیده گرفته میشود | DifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter برابر با false است، یا نسخهٔ منطبق HeaderFooterType وجود ندارد | پرچم را روی PageSetup تنظیم کنید و اطمینان حاصل کنید که نسخهٔ مربوط به سرصفحه/پاورقی موجود است |
| طرح چندستونی اعمال نمیشود | TextColumns.SetCount() با مقدار شمارش ۱ فراخوانی شد، یا بر روی PageSetup بخش اشتباه | متد SetCount() را با بیش از یک ستون در PageSetup.TextColumns بخش هدف فراخوانی کنید |
FAQ
چگونه میتوانم یک بخش جدید را بدون شروع صفحه جدید آغاز کنم؟
یک شکست SectionBreakContinuous را با DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous) وارد کنید.
چگونه میتوانم به یک بخش حاشیهها و جهتگیری اختصاصی بدهد؟
یک شکست بخش اضافه کنید، سپس ویژگیهای PageSetup بخش جدید را بر روی TopMargin، BottomMargin، LeftMargin، RightMargin، Orientation و PaperSize تنظیم کنید.
چگونه میتوانم صفحهٔ اول یک بخش سرصفحهٔ متفاوتی داشته باشد؟
در آن بخش PageSetup.DifferentFirstPageHeaderFooter = true را تنظیم کنید، و یک HeaderFooter از نوع HeaderFirst (و FooterFirst در صورت نیاز) به مجموعهٔ HeadersFooters آن اضافه کنید.
چگونه متن بدنهٔ یک بخش را در دو ستون تنظیم کنم؟
در بخش، PageSetup.TextColumns.SetCount(2) را فراخوانی کنید، سپس Spacing و EvenlySpaced / مقادیر جداگانهٔ TextColumn.Width را بر حسب نیاز تنظیم کنید.
API Reference خلاصه
| کلاس / Enum | توضیح |
|---|---|
Section | یک گره بخش؛ Body، HeadersFooters، PageSetup |
SectionCollection | هر Section در سند، از طریق Document.Sections |
Body / Story | محفظه اصلی محتوا برای یک بخش (Body) یا سرصفحه/پاورقی (HeaderFooter) |
PageSetup | ابعاد صفحه، حاشیهها، جهتگیری، مرزها و ستونها برای یک بخش |
HeaderFooter / HeaderFooterCollection | محتوای سرصفحه/پاصفحه و دسترسیگرهای تایپشده برای یک بخش |
HeaderFooterType | مشخص میکند که کدام نوع سرصفحه/پاصفحه (primary, first, even) یک HeaderFooter است |
TextColumn / TextColumnCollection | چیدمان متن چندستونی برای یک بخش |
PaperSize / Orientation / Margins | اندازه صفحه، جهتگیری و مقادیر پیشتنظیم حاشیه |
PageBorderAppliesTo / PageBorderDistanceFrom | صفحههایی که حاشیه صفحه روی آنها چاپ میشود و لبهٔ مرجع آن |
SectionStart / BreakType | نوع شکستبخش که بر روی یک بخش ثبت میشود، و انواع شکست که DocumentBuilder.InsertBreak() میپذیرد |
LineNumberRestartMode | زمانی که شمارهگذاری خودکار خطوط درون یک بخش دوباره شروع میشود |