نحوه کار با بخشها در .NET
این راهنما نشان میدهد چگونه شکستهای بخش را ایجاد کنید، تنظیمات صفحه را پیکربندی کنید و سرصفحهها، پاورقیها و چیدمان چندستونی را در Aspose.Words FOSS برای .NET، با استفاده از Section and PageSetup کلاسها. این راهنما خواندن بخشهای موجود در یک سند، شروع یک بخش جدید با DocumentBuilder، پیکربندی ابعاد و حاشیههای صفحه، افزودن انواع سرصفحه و پاورقی، و چیدمان متن اصلی در چندین ستون.
راهنمای گام به گام
مرحله ۱: نصب بسته
Aspose.Words FOSS for .NET هنوز بستهٔ NuGet را منتشر نکرده است – بهجای آن کتابخانه را از منبع بسازید. https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git را کلون کنید، سپس Aspose.Words.sln را در پیکربندی Release با SDK .NET بسازید و اسمبلی Aspose.Words حاصل را به پروژهتان ارجاع دهید. این کتابخانه هدف .NET Standard 2.0 را دارد، بنابراین بر روی .NET Framework 4.6.2+ و .NET 6/8/10 اجرا میشود.
مرحله ۲: وارد کردن کلاسهای مورد نیاز
یک دستور using Aspose.Words; اضافه کنید – Section، PageSetup، HeaderFooter، و enumهای مرتبط که در این راهنما استفاده شدهاند، همگی مستقیماً در فضای نام Aspose.Words همراه با Document و DocumentBuilder قرار دارند.
مرحله ۳: خواندن بخشهای موجود در یک سند
Document.Sections یک SectionCollection برمیگرداند که تمام Sectionهای سند را در خود نگه میدارد، هر کدام یک CompositeNode هستند که همچنین بخشی از درخت گره کلی میباشند. Document.FirstSection و Document.LastSection دسترسی مستقیم به بخشهای مرزی را بدون پیمایش مجموعه فراهم میکنند. هر Section شامل یک Body است — به همان شیوهای که به هر Story دیگر میرسید — و، در صورت وجود، محتوای سرصفحه و پاورقی که از طریق Section.HeadersFooters دسترسی میشود.
مرحله ۴: شروع یک بخش جدید با شکست بخش
Call DocumentBuilder.InsertBreak(BreakType) در مکاننما برای شروع یک بخش جدید. عبور BreakType.SectionBreakNewPage وقتی که بخش جدید باید همیشه در صفحهای تازه شروع شود، BreakType.SectionBreakContinuous وقتی که فقط نیاز به تغییر تنظیمات صفحه است (مثلاً تغییر به متن چندستونی) بدون اجبار به شکست صفحه، یا BreakType.SectionBreakNewColumn, SectionBreakEvenPage, و SectionBreakOddPage برای سایر رفتارهای شروع بخشی که ورد پشتیبانی میکند. یک شکست بخش فرمتبندی مربوط به بخشی که follows آن، بنابراین تنظیم کنید PageSetup ویژگیها را بر روی جدید Section – نه آنچه پیش از آن بود – پس از درج شکست. DocumentBuilder.MoveToSection(sectionIndex) مکاننمایی را به شروع بدنهٔ یک بخش خاص میبرد، و PageSetup.SectionStart میخواند یا تنظیم میکند SectionStart نوع شکست که قبلاً روی یک بخش موجود ثبت شده است.
مرحله ۵: پیکربندی ابعاد صفحه و حاشیهها
هر Section.PageSetup یک نمونهٔ PageSetup است. برای ابعاد صفحه و حاشیهها، PageWidth، PageHeight، LeftMargin، RightMargin، TopMargin، BottomMargin و Gutter را تنظیم کنید، یا یک پیشتنظیم Margins را مستقیماً به PageSetup.Margins اختصاص دهید. Orientation و PaperSize جهت صفحه و اندازهٔ کاغذ را کنترل میکنند. حاشیههای صفحه با Borders (یک BorderCollection)، BorderAppliesTo (PageBorderAppliesTo)، BorderDistanceFrom (PageBorderDistanceFrom)، BorderAlwaysInFront، BorderSurroundsHeader و BorderSurroundsFooter پیکربندی میشوند. برای بازنشانی تنظیمات صفحهٔ یک بخش به حالت پیشفرض قبل از پیکربندی آن از ابتدا، PageSetup.ClearFormatting() را فراخوانی کنید.
مرحله ۶: افزودن و پیوند سرصفحهها و پاورقیها
Section.HeadersFooters یک HeaderFooterCollection با دسترسیکنندگان تایپی است — HeaderPrimary، HeaderFirst، HeaderEven، FooterPrimary، FooterFirst و FooterEven — بههمراه GetByHeaderFooterType() برای جستجو توسط HeaderFooterType و Add() جهت افزودن یک مورد جدید. هر HeaderFooter یک Story است که پرچمهای IsHeader و IsLinkedToPrevious دارد. قبل از افزودن گونهٔ مربوطهٔ HeaderFirst/FooterFirst یا HeaderEven/FooterEven، PageSetup.DifferentFirstPageHeaderFooter یا PageSetup.OddAndEvenPagesHeaderFooter را فعال کنید — پرچم و گونه تنها بهصورت همزمان مؤثر هستند. برای اتصال مجدد سرصفحه یا پاورقی یک بخش به ارثبرداری محتوا از بخش قبلی، یا برای جدا کردن آن بهگونهای که بخش جدید با محتوای مستقل آغاز شود، HeaderFooterCollection.LinkToPrevious() را فراخوانی کنید.
مرحله ۷: چیدمان متن بدنه در چند ستون
PageSetup.TextColumns یک TextColumnCollection برای بخش برمیگرداند. SetCount() را با تعداد ستونهایی که متن بدنه باید به آن جریان یابد فراخوانی کنید، سپس EvenlySpaced، Spacing، LineBetween و Width را برای کنترل چیدمان ستونها تنظیم کنید. هنگامی که مجموعه بیش از یک ستون داشته باشد، نمونههای TextColumn جداگانه Width و SpaceAfter خود را نشان میدهند.
مرحله ۸: پاکسازی یا ویرایش دستهجمعی محتوای بخش
Section.AppendContent() و PrependContent() محتوای بدنه یک بخش دیگر را به این بخش کپی میکنند؛ ClearContent() بدنه یک بخش را به صورت دستهجمعی خالی میکند. ClearHeadersFooters() و DeleteHeaderFooterShapes() محتویات سرصفحه و پاورقی را در سراسر بخش پاک میکنند بدون اینکه خود بخش حذف شود.
مشکلات رایج و راهحلها
تنظیم صفحهٔ بخش جدید با آنچه تنظیم کردهام مطابقت ندارد PageSetup روی نادرست تنظیم شد Section نمونه. یک شکست بخش قالببندی را برای بخشی که پس از آن میآید حمل میکند – تنظیم PageSetup در بخشی که پس از آن میآید InsertBreak(), نه آن که پیش از آن است.
محتوای سرصفحه یا پاورقی از بخش قبلی بهصورت ناخواسته در بخش جدید ظاهر میشود سرصفحه یا پاورقی بخش جدید هنوز به بخش قبلی مرتبط است. Call HeaderFooterCollection.LinkToPrevious(false), یا محتوای سرصفحه/پاورقی متمایزی به بخش جدید اضافه کنید تا ارتباط قطع شود.
سرصفحه یا پاورقی صفحه اول یا صفحات زوج نادیده گرفته میشود DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, یا تطبیق HeaderFooterType گونهای وجود ندارد در Section.HeadersFooters. پرچم را فعال کنید PageSetup و نسخهٔ سرصفحه/پاصفحهٔ متناظر را بههم اضافه کنید.
چیدمان چندستونی اعمال نمیشود TextColumns.SetCount() با شمار یک فراخوانی شد، یا در بخش نادرست PageSetup. فراخوانی کنید SetCount() با بیش از یک ستون در بخش هدف PageSetup.TextColumns.
شکست بخش در موقعیت نادرست سند درج شد DocumentBuilder.InsertBreak(BreakType) در مکاننمای فعلی سازنده درج میکند. استفاده کنید DocumentBuilder.MoveToSection() یا سایر اعضای cursor-positioning سازنده برای قرار دادن مکاننما قبل از فراخوانی InsertBreak().
سوالات متداول
چگونه میتوانم یک بخش جدید را بدون شروع صفحه جدید شروع کنم؟
یک جداساز SectionBreakContinuous را با DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous) وارد کنید.
چگونه میتوانم به یک بخش حاشیهها و جهتگیری خاص خود را اختصاص دهم؟
یک جداساز بخش وارد کنید، سپس TopMargin، BottomMargin، LeftMargin، RightMargin، Orientation و PaperSize را در PageSetup بخش جدید تنظیم کنید.
چگونه صفحهٔ اول یک بخش از هدر متفاوتی استفاده کند؟
در آن بخش PageSetup.DifferentFirstPageHeaderFooter = true را تنظیم کنید، و یک HeaderFooter از نوع HeaderFirst (و FooterFirst در صورت نیاز) به مجموعهٔ HeadersFooters آن اضافه کنید.
چگونه متن بدنهٔ یک بخش را در دو ستون چیدمان کنم؟
در بخش PageSetup.TextColumns.SetCount(2) را فراخوانی کنید، سپس Spacing، EvenlySpaced یا مقادیر TextColumn.Width جداگانه را بر حسب نیاز تنظیم کنید.
چگونه میتوانم بهصورت مستقیم به اولین و آخرین بخشها دسترسی پیدا کنم؟
به جای ایندکسگذاری به Document.Sections، Document.FirstSection و Document.LastSection را بخوانید.