Werken met secties

Werken met secties

Een Word-document is verdeeld in één of meer secties, elk met zijn eigen paginainstelling, marges, kopteksten en voetteksten. Aspose.Words FOSS voor .NET vertegenwoordigt een sectie als een Section knooppunt, dat een Body en, optioneel, kopteksten en voetteksten, plus een PageSetup die de lay-out ervan regelt. Deze pagina behandelt het sectie-objectmodel, paginainstelling, kopteksten en voetteksten, en de lay-out van tekst in meerdere kolommen.


Het sectie-objectmodel

Document.Sections retourneert een SectionCollection – elke Section in het document, elk een CompositeNode en onderdeel van de knoopboom. Een Section bevat één Body (een Story die de hoofdparagrafen en tabellen van de sectie bevat) en, indien aanwezig, HeaderFooter knopen die bereikbaar zijn via Section.HeadersFooters, een HeaderFooterCollection. Document.FirstSection en Document.LastSection geven directe toegang tot de grenssecties. Section.AppendContent(), PrependContent() en ClearContent() manipuleren de body-inhoud van een sectie in bulk, terwijl ClearHeadersFooters() en DeleteHeaderFooterShapes() de kop-/voettekstinhoud wissen.


Secties en sectie-eindes maken

DocumentBuilder.InsertBreak(BreakType) voegt een einde in bij de cursor; BreakType omvat SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage en SectionBreakOddPage om een nieuwe sectie te starten, naast de niet-sectiewaarden PageBreak, ColumnBreak, LineBreak en ParagraphBreak. DocumentBuilder.MoveToSection() verplaatst de cursor naar het begin van de body van een specifieke sectie. PageSetup.SectionStart leest of stelt het SectionStart eindtype in dat is vastgelegd op een bestaande sectie.


Pagina-indeling

Section.PageSetup is een PageSetup instantie die paginadimensies en marges (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation en PaperSize, en per-zijde paginaranden (Borders, BorderAppliesTo via PageBorderAppliesTo, BorderDistanceFrom via PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). Regelnummering wordt geregeld door LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText en LineStartingNumber. PageSetup.ClearFormatting() zet het terug naar de standaardinstellingen.


Koppen en voetteksten

Section.HeadersFooters is een HeaderFooterCollection met getypeerde accessors – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – naast GetByHeaderFooterType(), Add() en LinkToPrevious(). Elke HeaderFooter is een Story (zoals Body) geïdentificeerd door zijn HeaderFooterType en gemarkeerd als IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter en PageSetup.OddAndEvenPagesHeaderFooter bepalen of Word de eerste-pagina- en even-pagina-kop-/voettekstvarianten überhaupt verwacht te gebruiken.


Meerdere tekstkolommen

PageSetup.TextColumns retourneert een TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) met SetCount() om de inhoud van de sectie in meerdere kolommen weer te geven. Individuele kolommen zijn TextColumn instanties (Width, SpaceAfter) zodra de collectie is gevuld met meer dan één kolom.


Tips en best practices

  • Een sectie-einde draagt de opmaak voor de sectie die follows het – instelling PageSetup eigenschappen op een Section die je net hebt aangemaakt (na InsertBreak) beïnvloedt de inhoud die na de onderbreking komt, niet ervoor.
  • Gebruik SectionBreakContinuous wanneer je alleen een paginainstelling-wijziging nodig hebt (bijvoorbeeld overschakelen naar tekst in meerdere kolommen) zonder een nieuwe pagina te starten; gebruik SectionBreakNewPage wanneer de nieuwe sectie altijd op een nieuwe pagina moet beginnen.
  • HeaderFooterCollection.LinkToPrevious() herstelt de koppeling van de header/footer van een sectie zodat deze de inhoud van de vorige sectie erft – doe dit voordat je nieuwe header/footer-inhoud schrijft als je wilt dat de nieuwe sectie onafhankelijk start van de vorige.
  • PageSetup.DifferentFirstPageHeaderFooter en OddAndEvenPagesHeaderFooter werken alleen als de overeenkomstige HeaderFooterType-varianten (HeaderFirst, HeaderEven, enzovoort) daadwerkelijk bestaan in Section.HeadersFooters – schakel de vlag in en voeg de overeenkomstige header/footer samen.
  • Section.Body en elke HeaderFooter zijn afzonderlijke Story-instanties – Range.Fields, bladwijzers en andere bereikgerichte bewerkingen op de Body van de sectie bereiken de headers en footers niet automatisch.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
De paginainstelling van de nieuwe sectie komt niet overeen met wat ik heb ingesteldPageSetup was ingesteld op de verkeerde Section instantieInstellen PageSetup op de sectie die follows de onderbreking, niet de vorige
Kop-/voettekstinhoud van de vorige sectie verschijnt onverwachts in een nieuwe sectieDe kop-/voetteksten van de nieuwe sectie zijn nog steeds gekoppeld aan de vorige sectieRoep HeaderFooterCollection.LinkToPrevious(false) aan (of voeg afzonderlijke kop-/voettekstinhoud toe) om ze los te koppelen
Eerste-pagina of even-pagina kop-/voettekst wordt genegeerdDifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter is false, of de overeenkomende HeaderFooterType variant bestaat nietZet de vlag op PageSetup en zorg ervoor dat de overeenkomstige header/footer-variant aanwezig is
Multi-kolom lay-out is niet van toepassingTextColumns.SetCount() werd aangeroepen met een telling van 1, of op de verkeerde sectie PageSetupRoep SetCount() aan met meer dan één kolom op de PageSetup.TextColumns van de doelsectie

FAQ

Hoe begin ik een nieuwe sectie zonder een nieuwe pagina te starten?

Voeg een SectionBreakContinuous break toe met DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

Hoe geef ik een sectie zijn eigen marges en oriëntatie?

Voeg een sectie-einde in, stel vervolgens de eigenschappen in van de nieuwe sectie’s PageSetup – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation en PaperSize.

Hoe zorg ik ervoor dat de eerste pagina van een sectie een andere koptekst gebruikt?

Stel PageSetup.DifferentFirstPageHeaderFooter = true in op die sectie en voeg een HeaderFooter van het type HeaderFirst (en FooterFirst, indien nodig) toe aan de HeadersFooters collectie.

Hoe leg ik de hoofdtekst van een sectie in twee kolommen?

Roep PageSetup.TextColumns.SetCount(2) aan op de sectie, pas vervolgens Spacing en EvenlySpaced / individuele TextColumn.Width waarden aan naar behoefte.


API Reference Samenvatting

Klasse / EnumBeschrijving
SectionEen sectieknooppunt; Body, HeadersFooters, PageSetup
SectionCollectionElke Section in het document, via Document.Sections
Body / StoryHoofdinhoudcontainer voor een sectie (Body) of koptekst/voettekst (HeaderFooter)
PageSetupPagina-afmetingen, marges, oriëntatie, randen en kolommen voor een sectie
HeaderFooter / HeaderFooterCollectionKoptekst/voettekstinhoud en de getypeerde accessors voor een sectie
HeaderFooterTypeIdentificeert welke header/footer-variant (primary, first, even) een HeaderFooter heeft
TextColumn / TextColumnCollectionMeerkoloms-tekstindeling voor een sectie
PaperSize / Orientation / MarginsPaginaformaat, oriëntatie en vooraf ingestelde marges
PageBorderAppliesTo / PageBorderDistanceFromOp welke pagina’s een paginarand wordt afgedrukt en de referentie-rand
SectionStart / BreakTypeSectie-onderbrekingstype vastgelegd op een sectie, en de onderbrekingssoorten DocumentBuilder.InsertBreak() accepteert
LineNumberRestartModeWanneer automatische regelnummering opnieuw start binnen een sectie

Zie ook

 Nederlands