Lucrul cu secțiuni

Lucrul cu secțiuni

Un document Word este împărțit în una sau mai multe secțiuni, fiecare având propriile setări de pagină, margini, antete și subsoluri. Aspose.Words FOSS pentru .NET reprezintă o secțiune ca un Section nod, conținând un Body și, opțional, antete și subsoluri, plus un PageSetup care controlează aspectul său. Această pagină acoperă modelul de obiecte al secțiunii, setările de pagină, antetele și subsolurile și aranjamentul textului pe mai multe coloane.


Modelul de obiecte al secțiunii

Document.Sections returnează un SectionCollection — fiecare Section din document, fiecare fiind un CompositeNode și parte a arborelui de noduri. Un Section conține un Body (un Story care deține paragrafele și tabelele principale ale secțiunii) și, când există, noduri HeaderFooter accesibile prin Section.HeadersFooters, un HeaderFooterCollection. Document.FirstSection și Document.LastSection oferă acces direct la secțiunile de frontieră. Section.AppendContent(), PrependContent() și ClearContent() manipulează în bloc conținutul corpului unei secțiuni, în timp ce ClearHeadersFooters() și DeleteHeaderFooterShapes() curăță conținutul antetului/subsolului.


Crearea secțiunilor și a întreruperilor de secțiune

DocumentBuilder.InsertBreak(BreakType) inserează o întrerupere la cursor; BreakType include SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage și SectionBreakOddPage pentru a începe o nouă secțiune, alături de valorile non-secțiune PageBreak, ColumnBreak, LineBreak și ParagraphBreak. DocumentBuilder.MoveToSection() mută cursorul la începutul corpului unei secțiuni specifice. PageSetup.SectionStart citește sau setează tipul de întrerupere SectionStart înregistrat pe o secțiune existentă.


Configurarea paginii

Section.PageSetup este o PageSetup instanță care acoperă dimensiunile paginii și marginile (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation și PaperSize, și bordurile paginii pe fiecare parte (Borders, BorderAppliesTo prin PageBorderAppliesTo, BorderDistanceFrom prin PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). Numerotarea liniilor este controlată de LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText și LineStartingNumber. PageSetup.ClearFormatting() o resetează la valorile implicite.


Anteturi și subsoluri

Section.HeadersFooters este un HeaderFooterCollection cu accesori tipizați – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – alături de GetByHeaderFooterType(), Add() și LinkToPrevious(). Fiecare HeaderFooter este un Story (ca Body) identificat prin HeaderFooterType și etichetat IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter și PageSetup.OddAndEvenPagesHeaderFooter controlează dacă Word se așteaptă ca variantele de antet/subsol pentru prima pagină și paginile pare să fie utilizate.


Coloane multiple de text

PageSetup.TextColumns returnează un TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) cu SetCount() pentru a aranja corpul secțiunii în mai multe coloane. Coloanele individuale sunt instanțe TextColumn (Width, SpaceAfter) odată ce colecția este populată cu mai mult de o coloană.


Sfaturi și bune practici

  • O întrerupere de secțiune transportă formatarea pentru secțiunea care follows ea – stabilind PageSetup proprietăți pe un Section pe care tocmai le-ai creat (după InsertBreak) afectează conținutul care vine după întrerupere, nu înainte de ea.
  • Folosește SectionBreakContinuous când ai nevoie doar de o modificare a configurării paginii (de exemplu, trecerea la text în coloane multiple) fără a începe o pagină nouă; folosește SectionBreakNewPage când noua secțiune ar trebui să înceapă întotdeauna pe o pagină proaspătă.
  • HeaderFooterCollection.LinkToPrevious() reconectează antetul/subsolul unei secțiuni pentru a moșteni conținutul secțiunii anterioare – faceți acest lucru înainte de a scrie conținut nou pentru antet/subsol dacă doriți ca noua secțiune să înceapă independent de cea anterioară.
  • PageSetup.DifferentFirstPageHeaderFooter și OddAndEvenPagesHeaderFooter au efect doar dacă variantele corespunzătoare HeaderFooterType (HeaderFirst, HeaderEven și altele) există cu adevărat în Section.HeadersFooters – activați flag-ul și adăugați antetul/subsolul corespunzător împreună.
  • Section.Body și fiecare HeaderFooter sunt instanțe separate de Story – Range.Fields, marcajele și alte operații cu rază de acțiune asupra Body secțiunii nu se extind automat în anteturile și subsolurile sale.

Probleme comune

ProblemăCauzăRemediere
Configurarea paginii pentru secțiunea nouă nu corespunde cu ceea ce am setatPageSetup a fost setat pe instanța greșită SectionSetare PageSetup în secțiunea care follows întreruperea, nu pe cea anterioară
Conținutul antetului/subsolului din secțiunea precedentă apare neașteptat într-o secțiune nouăAntetele/subsolurile noii secțiuni sunt încă legate de secțiunea anterioarăApelă HeaderFooterCollection.LinkToPrevious(false) (sau adaugă conținut distinct pentru antet/subsol) pentru a le deconecta
Antetul/subsolul primei pagini sau al paginii pare este ignoratDifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter este false, sau varianta potrivită HeaderFooterType nu existăSetați indicatorul pe PageSetup și asigurați-vă că varianta corespunzătoare de antet/subsol este prezentă
Aspectul cu mai multe coloane nu se aplicăTextColumns.SetCount() a fost apelat cu o valoare de 1, sau pe PageSetup secțiunii greșiteApelați SetCount() cu mai mult de o coloană pe PageSetup.TextColumns secțiunii țintă

FAQ

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

Introduceți o pauză SectionBreakContinuous cu DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

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

Introduceți o ruptură de secțiune, apoi setați proprietățile pe PageSetup – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation și PaperSize.

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

Setați PageSetup.DifferentFirstPageHeaderFooter = true pe acea secțiune și adăugați 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?

Apelați PageSetup.TextColumns.SetCount(2) pe secțiune, apoi ajustați Spacing și EvenlySpaced / valorile individuale TextColumn.Width după cum este necesar.


API Reference Rezumat

Clasă / EnumDescriere:
SectionUn nod de secțiune; Body, HeadersFooters, PageSetup
SectionCollectionFiecare Section în document, prin Document.Sections
Body / StoryContainer principal de conținut pentru o secțiune (Body) sau antet/subsol (HeaderFooter)
PageSetupDimensiunile paginii, marginile, orientarea, bordurile și coloanele pentru o secțiune
HeaderFooter / HeaderFooterCollectionConținutul antetului/subsolului și accesori tipizați pentru o secțiune
HeaderFooterTypeIdentifică care variantă de antet/subsol (principal, primul, par) are un HeaderFooter
TextColumn / TextColumnCollectionAranjament de text pe mai multe coloane pentru o secțiune
PaperSize / Orientation / MarginsDimensiunea paginii, orientarea și valorile presetate ale marginilor
PageBorderAppliesTo / PageBorderDistanceFromPe ce pagini se imprimă o bordură de pagină și marginea de referință a acesteia
SectionStart / BreakTypeTipul de întrerupere de secțiune înregistrat pe o secțiune și tipurile de întrerupere pe care le acceptă DocumentBuilder.InsertBreak()
LineNumberRestartModeCând numerotarea automată a liniilor se reinițializează în interiorul unei secțiuni

Vezi și:

 Română