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 PageSetup egenskaper på en Section du precis skapade (efter InsertBreak) påverkar innehållet som kommer efter avbrottet, inte innan.
  • Använd SectionBreakContinuous när du bara behöver en sidinställningsändring (t.ex. byta till flerkolumnstext) utan att starta en ny sida; använd SectionBreakNewPage nä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.DifferentFirstPageHeaderFooter och OddAndEvenPagesHeaderFooter får endast effekt om de motsvarande HeaderFooterType-varianterna (HeaderFirst, HeaderEven och så vidare) faktiskt finns i Section.HeadersFooters – aktivera flaggan och lägg till det motsvarande sidhuvudet/sidfoten tillsammans.
  • Section.Body och varje HeaderFooter är separata Story-instanser – Range.Fields, bokmärken och andra intervallbaserade operationer på avsnittets Body når inte automatiskt in i dess sidhuvuden och sidfötter.

Vanliga problem

ProblemOrsakLösning
Den nya sektionens sidinställning matchar inte det jag angavPageSetup blev inställd på fel Section instansStä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 avsnittDet nya avsnittets rubriker/sidfötter är fortfarande länkade till föregående avsnittAnropa HeaderFooterCollection.LinkToPrevious(false) (eller lägg till distinkt rubrik-/sidfotsinnehåll) för att avlänka dem
Förstasidans eller jämnsidans rubrik/sidfot ignorerasDifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter är false, eller så finns den matchande HeaderFooterType-varianten inteStäll in flaggan på PageSetup och säkerställ att motsvarande header/footer-variant finns
Multi-column layout gäller inteTextColumns.SetCount() anropades med ett antal på 1, eller på fel sections PageSetupAnropa 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 / EnumBeskrivning
SectionEn sektionsnod; Body, HeadersFooters, PageSetup
SectionCollectionVarje Section i dokumentet, via Document.Sections
Body / StoryHuvudinnehållsbehållare för ett avsnitt (Body) eller sidhuvud/sidfot (HeaderFooter)
PageSetupSidans dimensioner, marginaler, orientering, kanter och kolumner för ett avsnitt
HeaderFooter / HeaderFooterCollectionSidhuvud/sidfot-innehåll och de typade åtkomstfunktionerna för ett avsnitt
HeaderFooterTypeIdentifierar vilken rubrik-/sidfotvariant (primary, first, even) en HeaderFooter är
TextColumn / TextColumnCollectionFlerkolumns textlayout för ett avsnitt
PaperSize / Orientation / MarginsSidstorlek, orientering och förinställda marginalvärden
PageBorderAppliesTo / PageBorderDistanceFromVilka sidor en sidram skrivs ut på, samt dess referenskant
SectionStart / BreakTypeAvsnittsbrytningstyp registrerad på ett avsnitt, och brytningstyperna DocumentBuilder.InsertBreak() accepterar
LineNumberRestartModeNär automatisk radnumrering startar om inom ett avsnitt

Se även

 Svenska