Як працювати з розділами у .NET

Як працювати з розділами у .NET

Цей посібник показує, як створювати розриви розділів, налаштовувати параметри сторінки та керувати колонтитулами, підвалами та багатостовпцевим макетом у Aspose.Words FOSS для .NET, використовуючи Section and PageSetup класи. Охоплює читання розділів, вже існуючих у документі, та початок нового розділу за допомогою DocumentBuilder, налаштування розмірів та полей сторінки, додавання варіантів колонтитулів і підвалів, а також розміщення основного тексту в декількох колонках.

Посібник крок за кроком

Крок 1: Встановити пакет

Aspose.Words FOSS для .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.


Крок 2: Імпортувати необхідні класи

Додайте директиву using Aspose.Words; — Section, PageSetup, HeaderFooter та пов’язані перерахування, що використовуються в цьому посібнику, розташовані безпосередньо в просторі імен Aspose.Words разом з Document та DocumentBuilder.


Крок 3: Прочитати розділи, які вже є в документі

Document.Sections повертає SectionCollection, що містить кожен Section у документі, кожен CompositeNode, який також є частиною загального дерева вузлів. Document.FirstSection і Document.LastSection забезпечують прямий доступ до крайових розділів без ітерації колекції. Кожен Section містить один Body – доступний так само, як будь-який інший Story – і, коли присутній, вміст заголовка та колонтитула, до якого можна дістатися через Section.HeadersFooters.


Крок 4: Розпочати новий розділ за допомогою розриву розділу

Call DocumentBuilder.InsertBreak(BreakType) на курсорі, щоб розпочати новий розділ. Передайте BreakType.SectionBreakNewPage коли новий розділ повинен завжди починатися на новій сторінці, BreakType.SectionBreakContinuous коли потрібна лише зміна налаштувань сторінки (наприклад, перехід на багатостовпцевий текст) без примусових розривів сторінки, або BreakType.SectionBreakNewColumn, SectionBreakEvenPage, і SectionBreakOddPage для інших поведінок початку розділу, які підтримує Word. Розрив розділу несе форматування для розділу, який follows його, тому встановіть PageSetup властивості для нового Section – не для попереднього – після вставки розриву. DocumentBuilder.MoveToSection(sectionIndex) переміщує курсор на початок тіла конкретного розділу, і PageSetup.SectionStart зчитує або встановлює SectionStart тип розриву, вже записаний у існуючому розділі.


Крок 5: Налаштувати розміри сторінки та поля

Кожен 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(), щоб скинути налаштування сторінки розділу до значень за замовчуванням перед їхньою повною конфігурацією.


Крок 6: Додати та пов’язати заголовки та колонтитули

Section.HeadersFooters — це HeaderFooterCollection з типізованими аксесорами – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – разом із GetByHeaderFooterType() для пошуку за HeaderFooterType та Add(), щоб додати новий. Кожен HeaderFooter є Story, позначений IsHeader і IsLinkedToPrevious. Увімкніть PageSetup.DifferentFirstPageHeaderFooter або PageSetup.OddAndEvenPagesHeaderFooter перед додаванням відповідного варіанту HeaderFirst/FooterFirst або HeaderEven/FooterEven – прапорець і варіант діють лише разом. Викличте HeaderFooterCollection.LinkToPrevious(), щоб повторно підключити заголовок або колонтитул розділу і успадкувати вміст попереднього розділу, або від’єднати його, щоб новий розділ починався з незалежного вмісту.


Крок 7: Розташування основного тексту в декількох колонках

PageSetup.TextColumns повертає TextColumnCollection для розділу. Викличте SetCount() з кількістю колонок, у які має тексти розтікатися, потім налаштуйте EvenlySpaced, Spacing, LineBetween і Width, щоб керувати розташуванням колонок. Коли колекція містить більше однієї колонки, окремі екземпляри TextColumn відкривають свої власні Width та SpaceAfter.


Крок 8: Очистити або масово редагувати вміст розділу

Section.AppendContent() і PrependContent() копіюють основний вміст іншого розділу в цей; ClearContent() масово очищає основний вміст розділу. ClearHeadersFooters() і DeleteHeaderFooterShapes() очищають вміст заголовка та підвалу у всьому розділі, не видаляючи сам розділ.

Типові проблеми та їх вирішення

Налаштування сторінки нового розділу не відповідає тому, що я встановив PageSetup було встановлено на неправильному Section екземплярі. Розрив розділу несе форматування для розділу, який йде після нього – встановіть PageSetup на розділ, який йде після InsertBreak(), а не на той, що перед ним.

Вміст заголовка або підвалу з попереднього розділу несподівано з’являється в новому Заголовок або підвал нового розділу все ще пов’язаний з попереднім розділом. Викличте HeaderFooterCollection.LinkToPrevious(false), або додайте окремий вміст заголовка/підвалу до нового розділу, щоб від’єднати його.

Колонтитул першої або парної сторінки ігнорується DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, або відповідний HeaderFooterType варіант не існує в Section.HeadersFooters. Встановіть прапорець у PageSetup і додайте відповідний варіант header/footer разом.

Багатостовпцеве розташування не застосовується TextColumns.SetCount() було викликано з лічильником один, або в неправильному розділі PageSetup. Виклик SetCount() з більш ніж одним стовпцем у цільовому розділі PageSetup.TextColumns.

Розрив розділу вставлено у неправильному місці документа DocumentBuilder.InsertBreak(BreakType) вставляє у поточному курсорі будівника. Використовуйте DocumentBuilder.MoveToSection() або інші члени будівника, що позиціонують курсор, щоб розташувати курсор перед викликом 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.FirstSection і Document.LastSection замість індексування Document.Sections.

Дивіться також

 Українська