Arbeta med sektioner
Arbeta med sektioner
Ett Word-dokument är indelat i en eller flera sektioner, var och en med sin egen sidinställning, marginaler, sidhuvuden och sidfötter. Aspose.Words FOSS för .NET representerar en sektion som en Section nod, som innehåller en Body och, valfritt, sidhuvuden och sidfötter, samt en PageSetup som styr dess layout. Den här sidan täcker sektionens objektmodell, sidinställning, sidhuvuden och sidfötter, samt flerkolumnstextlayout.
Sektionens objektmodell
Document.Sections returnerar en SectionCollection – varje Section i dokumentet, var och en en CompositeNode och del av nodträdet. En Section innehåller en Body (en Story som håller sektionens huvudparagrafer och tabeller) och, när den finns, HeaderFooter noder som nås via Section.HeadersFooters, en HeaderFooterCollection. Document.FirstSection och Document.LastSection ger direkt åtkomst till gränssektionerna. Section.AppendContent(), PrependContent() och ClearContent() manipulerar en sektionens brödtextinnehåll i bulk, medan ClearHeadersFooters() och DeleteHeaderFooterShapes() rensar sidhuvuds-/sidfotsinnehåll.
Skapa sektioner och sektionsbrytningar
DocumentBuilder.InsertBreak(BreakType) infogar ett bryt vid markören; BreakType inkluderar SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage och SectionBreakOddPage för att starta en ny sektion, tillsammans med icke-sektionsvärdena PageBreak, ColumnBreak, LineBreak och ParagraphBreak. DocumentBuilder.MoveToSection() flyttar markören till början av en specifik sektions brödtext. PageSetup.SectionStart läser eller sätter den SectionStart bryttyp som är registrerad på en befintlig sektion.
Sidinställning
Section.PageSetup är en PageSetup instans som täcker siddimensioner och marginaler (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation och PaperSize, och per-sidiga sidramar (Borders, BorderAppliesTo via PageBorderAppliesTo, BorderDistanceFrom via PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). Radnumrering styrs av LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText och LineStartingNumber. PageSetup.ClearFormatting() återställer den till standardinställningarna.
Sidhuvuden och sidfötter
Section.HeadersFooters är en HeaderFooterCollection med typade åtkomstmetoder – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – tillsammans med GetByHeaderFooterType(), Add() och LinkToPrevious(). Varje HeaderFooter är en Story (som Body) identifierad av dess HeaderFooterType och flaggad som IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter och PageSetup.OddAndEvenPagesHeaderFooter styr om Word förväntar sig att första-sidans och jämna-sidors header/footer-varianter ska användas alls.
Flera textkolumner
PageSetup.TextColumns returnerar en TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) med SetCount() för att lägga avsnittets kropp i flera kolumner. Enskilda kolumner är TextColumn-instanser (Width, SpaceAfter) när samlingen är fylld med mer än en kolumn.
Tips och bästa praxis
- En sektionsbrytning bär formateringen för sektionen som follows den – inställning
PageSetupegenskaper på enSectiondu precis skapade (efterInsertBreak) påverkar innehållet som kommer efter avbrottet, inte innan. - Använd
SectionBreakContinuousnär du bara behöver en sidinställningsändring (t.ex. byta till flerkolumnstext) utan att starta en ny sida; användSectionBreakNewPagenär det nya avsnittet alltid ska börja på en ny sida. HeaderFooterCollection.LinkToPrevious()återansluter ett avsnitts sidhuvud/sidfot för att ärva föregående avsnitts innehåll – gör detta innan du skriver nytt sidhuvud/sidfot-innehåll om du vill att det nya avsnittet ska starta oberoende från det föregående.PageSetup.DifferentFirstPageHeaderFooterochOddAndEvenPagesHeaderFooterfår endast effekt om de motsvarandeHeaderFooterType-varianterna (HeaderFirst,HeaderEvenoch så vidare) faktiskt finns iSection.HeadersFooters– aktivera flaggan och lägg till det motsvarande sidhuvudet/sidfoten tillsammans.Section.Bodyoch varjeHeaderFooterär separataStory-instanser –Range.Fields, bokmärken och andra intervallbaserade operationer på avsnittetsBodynår inte automatiskt in i dess sidhuvuden och sidfötter.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
| Den nya sektionens sidinställning matchar inte det jag angav | PageSetup blev inställd på fel Section instans | Ställ in PageSetup på avsnittet som follows brytningen, inte den som föregår den |
| Rubrik-/sidfotinnehåll från föregående avsnitt visas oväntat i ett nytt avsnitt | Det nya avsnittets rubriker/sidfötter är fortfarande länkade till föregående avsnitt | Anropa HeaderFooterCollection.LinkToPrevious(false) (eller lägg till distinkt rubrik-/sidfotsinnehåll) för att avlänka dem |
| Förstasidans eller jämnsidans rubrik/sidfot ignoreras | DifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter är false, eller så finns den matchande HeaderFooterType-varianten inte | Ställ in flaggan på PageSetup och säkerställ att motsvarande header/footer-variant finns |
| Multi-column layout gäller inte | TextColumns.SetCount() anropades med ett antal på 1, eller på fel sections PageSetup | Anropa SetCount() med mer än en kolumn på målsektionens PageSetup.TextColumns |
FAQ
Hur startar jag ett nytt avsnitt utan att starta en ny sida?
Infoga ett SectionBreakContinuous-bryt med DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).
Hur ger jag ett avsnitt sina egna marginaler och orientering?
Infoga ett sektionbrytning, sedan ange egenskaperna på den nya sektionens PageSetup – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation och PaperSize.
Hur får jag en sektions första sida att använda ett annat sidhuvud?
Ställ in PageSetup.DifferentFirstPageHeaderFooter = true på den sektionen och lägg till en HeaderFooter av typen HeaderFirst (och FooterFirst, om så behövs) i dess HeadersFooters-samling.
Hur lägger jag upp en sektions brödtext i två kolumner?
Anropa PageSetup.TextColumns.SetCount(2) på sektionen, justera sedan Spacing och EvenlySpaced / enskilda TextColumn.Width-värden efter behov.
API Reference Sammanfattning
| Klass / Enum | Beskrivning |
|---|---|
Section | En sektionsnod; Body, HeadersFooters, PageSetup |
SectionCollection | Varje Section i dokumentet, via Document.Sections |
Body / Story | Huvudinnehållsbehållare för ett avsnitt (Body) eller sidhuvud/sidfot (HeaderFooter) |
PageSetup | Sidans dimensioner, marginaler, orientering, kanter och kolumner för ett avsnitt |
HeaderFooter / HeaderFooterCollection | Sidhuvud/sidfot-innehåll och de typade åtkomstfunktionerna för ett avsnitt |
HeaderFooterType | Identifierar vilken rubrik-/sidfotvariant (primary, first, even) en HeaderFooter är |
TextColumn / TextColumnCollection | Flerkolumns textlayout för ett avsnitt |
PaperSize / Orientation / Margins | Sidstorlek, orientering och förinställda marginalvärden |
PageBorderAppliesTo / PageBorderDistanceFrom | Vilka sidor en sidram skrivs ut på, samt dess referenskant |
SectionStart / BreakType | Avsnittsbrytningstyp registrerad på ett avsnitt, och brytningstyperna DocumentBuilder.InsertBreak() accepterar |
LineNumberRestartMode | När automatisk radnumrering startar om inom ett avsnitt |