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
PageSetupproprietăți pe unSectionpe care tocmai le-ai creat (dupăInsertBreak) afectează conținutul care vine după întrerupere, nu înainte de ea. - Folosește
SectionBreakContinuouscâ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șteSectionBreakNewPagecâ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șiOddAndEvenPagesHeaderFooterau efect doar dacă variantele corespunzătoareHeaderFooterType(HeaderFirst,HeaderEvenși altele) există cu adevărat înSection.HeadersFooters– activați flag-ul și adăugați antetul/subsolul corespunzător împreună.Section.Bodyși fiecareHeaderFootersunt instanțe separate deStory–Range.Fields, marcajele și alte operații cu rază de acțiune asupraBodysecț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 setat | PageSetup a fost setat pe instanța greșită Section | Setare 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 ignorat | DifferentFirstPageHeaderFooter / 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șite | Apelaț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ă / Enum | Descriere: |
|---|---|
Section | Un nod de secțiune; Body, HeadersFooters, PageSetup |
SectionCollection | Fiecare Section în document, prin Document.Sections |
Body / Story | Container principal de conținut pentru o secțiune (Body) sau antet/subsol (HeaderFooter) |
PageSetup | Dimensiunile paginii, marginile, orientarea, bordurile și coloanele pentru o secțiune |
HeaderFooter / HeaderFooterCollection | Conținutul antetului/subsolului și accesori tipizați pentru o secțiune |
HeaderFooterType | Identifică care variantă de antet/subsol (principal, primul, par) are un HeaderFooter |
TextColumn / TextColumnCollection | Aranjament de text pe mai multe coloane pentru o secțiune |
PaperSize / Orientation / Margins | Dimensiunea paginii, orientarea și valorile presetate ale marginilor |
PageBorderAppliesTo / PageBorderDistanceFrom | Pe ce pagini se imprimă o bordură de pagină și marginea de referință a acesteia |
SectionStart / BreakType | Tipul de întrerupere de secțiune înregistrat pe o secțiune și tipurile de întrerupere pe care le acceptă DocumentBuilder.InsertBreak() |
LineNumberRestartMode | Când numerotarea automată a liniilor se reinițializează în interiorul unei secțiuni |