Cum să lucrați cu secțiunile în .NET

Cum să lucrați cu secțiunile în .NET

Acest ghid arată cum să creați întreruperi de secțiune, să configurați setările paginii și să gestionați antetele, subsolurile și aspectul pe mai multe coloane în Aspose.Words FOSS pentru .NET, folosind Section and PageSetup clase. Acoperă citirea secțiunilor deja existente într-un document, începerea unei noi secțiuni cu DocumentBuilder, configurarea dimensiunilor paginii și a marginilor, adăugarea variantelor de antet și subsol și aranjarea textului principal în mai multe coloane.

Ghid pas cu pas

Pasul 1: Instalează pachetul

Aspose.Words FOSS pentru .NET nu publică încă un pachet NuGet – construiește biblioteca din sursă în schimb. Clonează https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, apoi compilează Aspose.Words.sln în configurație Release cu SDK-ul .NET și referențiază ansamblul Aspose.Words rezultat din proiectul tău. Biblioteca vizează .NET Standard 2.0, astfel că rulează pe .NET Framework 4.6.2+ și .NET 6/8/10.


Pasul 2: Importă clasele necesare

Adaugă o directivă using Aspose.Words; – Section, PageSetup, HeaderFooter și enumerările aferente utilizate în acest ghid se află direct în spațiul de nume Aspose.Words, alături de Document și DocumentBuilder.


Pasul 3: Citește secțiunile deja dintr-un document

Document.Sections returnează un SectionCollection care conține fiecare Section din document, fiecare fiind un CompositeNode care face parte și din arborele global de noduri. Document.FirstSection și Document.LastSection oferă acces direct la secțiunile de margine fără a itera colecția. Fiecare Section conține un Body – accesat în același mod ca orice alt Story – și, când există, conținutul de antet și subsol accesat prin Section.HeadersFooters.


Pasul 4: Începe o secțiune nouă cu o întrerupere de secțiune

Call DocumentBuilder.InsertBreak(BreakType) la cursor pentru a începe o nouă secțiune. Transmite BreakType.SectionBreakNewPage când noua secțiune ar trebui să înceapă întotdeauna pe o pagină nouă, BreakType.SectionBreakContinuous când este necesară doar o modificare a setărilor paginii (de exemplu, trecerea la text pe mai multe coloane) fără a forța o întrerupere de pagină, sau BreakType.SectionBreakNewColumn, SectionBreakEvenPage, și SectionBreakOddPage pentru celelalte comportamente de început de secțiune pe care le acceptă Word. O întrerupere de secțiune poartă formatarea pentru secțiunea care follows ea, așa că setează PageSetup proprietăți pe noua Section – nu pe cea anterioară – odată ce întreruperea este inserată. DocumentBuilder.MoveToSection(sectionIndex) mută cursorul la începutul corpului unei secțiuni specifice și PageSetup.SectionStart citește sau setează SectionStart tipul de întrerupere deja înregistrat într-o secțiune existentă.


Pasul 5: Configurează dimensiunile paginii și marginile

Fiecare Section.PageSetup este o instanță PageSetup. Definește PageWidth, PageHeight, LeftMargin, RightMargin, TopMargin, BottomMargin și Gutter pentru dimensiunile paginii și margini, sau atribuie un preset Margins direct la PageSetup.Margins. Orientation și PaperSize controlează orientarea paginii și dimensiunea hârtiei. Marginile paginii sunt configurate cu Borders (un BorderCollection), BorderAppliesTo (PageBorderAppliesTo), BorderDistanceFrom (PageBorderDistanceFrom), BorderAlwaysInFront, BorderSurroundsHeader și BorderSurroundsFooter. Apelează PageSetup.ClearFormatting() pentru a reseta configurarea paginii unei secțiuni la valorile implicite înainte de a o configura de la zero.


Pasul 6: Adaugă și leagă anteturile și subsolurile

Section.HeadersFooters este un HeaderFooterCollection cu accesori tipizați – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – alături de GetByHeaderFooterType() pentru căutare prin HeaderFooterType și Add() pentru a adăuga unul nou. Fiecare HeaderFooter este un Story, marcat cu IsHeader și IsLinkedToPrevious. Activează PageSetup.DifferentFirstPageHeaderFooter sau PageSetup.OddAndEvenPagesHeaderFooter înainte de a adăuga varianta corespunzătoare HeaderFirst/FooterFirst sau HeaderEven/FooterEven – semnalul și varianta au efect doar împreună. Apelează HeaderFooterCollection.LinkToPrevious() pentru a reconecta antetul sau subsolul unei secțiuni pentru a moșteni conținutul secțiunii precedente, sau pentru a le deconecta astfel încât secțiunea nouă să înceapă cu conținut independent.


Pasul 7: Așează textul corpului în coloane multiple

PageSetup.TextColumns returnează un TextColumnCollection pentru secțiune. Apelă SetCount() cu numărul de coloane în care ar trebui să curgă textul corpului, apoi ajustează EvenlySpaced, Spacing, LineBetween și Width pentru a controla modul în care sunt aranjate coloanele. Odată ce colecția conține mai mult de o coloană, fiecare instanță TextColumn expune propriile Width și SpaceAfter.


Pasul 8: Golește sau editează în bloc conținutul secțiunii

Section.AppendContent() și PrependContent() copiază conținutul corpului unei alte secțiuni în aceasta; ClearContent() golește corpul unei secțiuni în bloc. ClearHeadersFooters() și DeleteHeaderFooterShapes() șterg conținutul antetului și al subsolului în întreaga secțiune fără a elimina secțiunea în sine.

Probleme comune și remedieri

Configurarea paginii unei secțiuni noi nu corespunde cu ceea ce am setat PageSetup a fost setat pe greșit Section instanță. O întrerupere de secțiune transportă formatarea pentru secțiunea care o urmează – set PageSetup pe secțiunea care urmează InsertBreak(), nu pe cea de dinainte.

Conținutul de antet sau subsol din secțiunea anterioară apare în mod neașteptat într-una nouă Antetul sau subsolul secțiunii noi este încă legat de secțiunea anterioară. Apelă HeaderFooterCollection.LinkToPrevious(false), sau adaugă conținut distinct de antet/subsol în secțiunea nouă, pentru a-l deconecta.

Antetul/subsolul pentru prima pagină sau pentru paginile pare este ignorat DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, sau potrivirea HeaderFooterType varianta nu există în Section.HeadersFooters. Setează indicatorul pe PageSetup și adaugă varianta corespunzătoare de antet/subsol împreună.

Aspectul pe mai multe coloane nu se aplică TextColumns.SetCount() a fost apelat cu o numărătoare de unu, sau pe secțiunea greșită a PageSetup. Apelează SetCount() cu mai mult de o coloană pe secțiunea țintă PageSetup.TextColumns.

Întrerupere de secțiune inserată la poziția greșită a documentului DocumentBuilder.InsertBreak(BreakType) inserează la cursorul curent al constructorului. Folosiți DocumentBuilder.MoveToSection() sau alți membri ai constructorului pentru poziționarea cursorului, pentru a poziționa cursorul înainte de a apela InsertBreak().

Întrebări frecvente

Cum pot începe o secțiune nouă fără a începe o pagină nouă?

Introduceți o întrerupere SectionBreakContinuous cu DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

Cum pot acorda unei secțiuni propriile margini și orientare?

Introduceți o întrerupere de secțiune, apoi setați TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation și PaperSize pe PageSetup secțiunii noi.

Cum pot face ca prima pagină a unei secțiuni să folosească un antet diferit?

Setează PageSetup.DifferentFirstPageHeaderFooter = true pe acea secțiune și adaugă un HeaderFooter de tip HeaderFirst (și FooterFirst, dacă este necesar) la colecția sa HeadersFooters.

Cum pot aranja textul corpului unei secțiuni în două coloane?

Apelează PageSetup.TextColumns.SetCount(2) pe secțiune, apoi ajustează valorile Spacing, EvenlySpaced sau valorile individuale TextColumn.Width, după cum este necesar.

Cum pot accesa direct prima și ultima secțiune?

Citește Document.FirstSection și Document.LastSection în loc să indexezi în Document.Sections.

Vezi și:

 Română