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
PageSetupeigenschappen op eenSectiondie je net hebt aangemaakt (naInsertBreak) beïnvloedt de inhoud die na de onderbreking komt, niet ervoor. - Gebruik
SectionBreakContinuouswanneer je alleen een paginainstelling-wijziging nodig hebt (bijvoorbeeld overschakelen naar tekst in meerdere kolommen) zonder een nieuwe pagina te starten; gebruikSectionBreakNewPagewanneer 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.DifferentFirstPageHeaderFooterenOddAndEvenPagesHeaderFooterwerken alleen als de overeenkomstigeHeaderFooterType-varianten (HeaderFirst,HeaderEven, enzovoort) daadwerkelijk bestaan inSection.HeadersFooters– schakel de vlag in en voeg de overeenkomstige header/footer samen.Section.Bodyen elkeHeaderFooterzijn afzonderlijkeStory-instanties –Range.Fields, bladwijzers en andere bereikgerichte bewerkingen op deBodyvan de sectie bereiken de headers en footers niet automatisch.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| De paginainstelling van de nieuwe sectie komt niet overeen met wat ik heb ingesteld | PageSetup was ingesteld op de verkeerde Section instantie | Instellen PageSetup op de sectie die follows de onderbreking, niet de vorige |
| Kop-/voettekstinhoud van de vorige sectie verschijnt onverwachts in een nieuwe sectie | De kop-/voetteksten van de nieuwe sectie zijn nog steeds gekoppeld aan de vorige sectie | Roep HeaderFooterCollection.LinkToPrevious(false) aan (of voeg afzonderlijke kop-/voettekstinhoud toe) om ze los te koppelen |
| Eerste-pagina of even-pagina kop-/voettekst wordt genegeerd | DifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter is false, of de overeenkomende HeaderFooterType variant bestaat niet | Zet de vlag op PageSetup en zorg ervoor dat de overeenkomstige header/footer-variant aanwezig is |
| Multi-kolom lay-out is niet van toepassing | TextColumns.SetCount() werd aangeroepen met een telling van 1, of op de verkeerde sectie PageSetup | Roep 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 / Enum | Beschrijving |
|---|---|
Section | Een sectieknooppunt; Body, HeadersFooters, PageSetup |
SectionCollection | Elke Section in het document, via Document.Sections |
Body / Story | Hoofdinhoudcontainer voor een sectie (Body) of koptekst/voettekst (HeaderFooter) |
PageSetup | Pagina-afmetingen, marges, oriëntatie, randen en kolommen voor een sectie |
HeaderFooter / HeaderFooterCollection | Koptekst/voettekstinhoud en de getypeerde accessors voor een sectie |
HeaderFooterType | Identificeert welke header/footer-variant (primary, first, even) een HeaderFooter heeft |
TextColumn / TextColumnCollection | Meerkoloms-tekstindeling voor een sectie |
PaperSize / Orientation / Margins | Paginaformaat, oriëntatie en vooraf ingestelde marges |
PageBorderAppliesTo / PageBorderDistanceFrom | Op welke pagina’s een paginarand wordt afgedrukt en de referentie-rand |
SectionStart / BreakType | Sectie-onderbrekingstype vastgelegd op een sectie, en de onderbrekingssoorten DocumentBuilder.InsertBreak() accepteert |
LineNumberRestartMode | Wanneer automatische regelnummering opnieuw start binnen een sectie |