Szakaszok kezelése
Szakaszok kezelése
Egy Word-dokumentum egy vagy több szakaszra van osztva, mindegyik saját oldalbeállítással, margókkal, fejlécekkel és láblécekkel rendelkezik. Aspose.Words FOSS a .NET számára egy szakaszt ábrázol mint egy Section csomópont, amely tartalmaz egy Body és opcionálisan fejléceket és lábléceket, valamint egy PageSetup ami szabályozza az elrendezését. Ez az oldal a szakasz objektummodellt, az oldalbeállítást, a fejléceket és lábléceket, valamint a többoszlopos szövegelrendezést tárgyalja.
A szakasz objektummodellje
Document.Sections egy SectionCollection-t ad vissza – minden Section a dokumentumban, mindegyik egy CompositeNode és a csomópontfa része. Egy Section egy Body-t tartalmaz (egy Story, amely a szakasz fő bekezdéseit és táblázatait tárol) és, ha jelen van, HeaderFooter csomópontokat, amelyek Section.HeadersFooters keresztül érhetők el, egy HeaderFooterCollection. Document.FirstSection és Document.LastSection közvetlen hozzáférést biztosítanak a határoló szakaszokhoz. Section.AppendContent(), PrependContent() és ClearContent() tömegesen manipulálják egy szakasz törzs tartalmát, míg ClearHeadersFooters() és DeleteHeaderFooterShapes() törlik a fejléc/lábléc tartalmát.
Szakaszok és szakasztörések létrehozása
DocumentBuilder.InsertBreak(BreakType) törést szúr be a kurzornál; BreakType tartalmazza a SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage és SectionBreakOddPage elemeket egy új szakasz indításához, a nem-szakasz értékekkel együtt: PageBreak, ColumnBreak, LineBreak és ParagraphBreak. DocumentBuilder.MoveToSection() a kurzort egy adott szakasz törzsének elejére helyezi. PageSetup.SectionStart beolvassa vagy beállítja a SectionStart töréstípust, amely egy meglévő szakaszon van rögzítve.
Oldalbeállítás
Section.PageSetup egy PageSetup példány, amely az oldal méreteket és margókat fedi le (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation és PaperSize, valamint az egyes oldalsó szegélyeket (Borders, BorderAppliesTo a(z) PageBorderAppliesTo segítségével, BorderDistanceFrom a(z) PageBorderDistanceFrom segítségével, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). A sorozatszámozást a(z) LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText és LineStartingNumber szabályozza. A(z) PageSetup.ClearFormatting() visszaállítja az alapértelmezett értékekre.
Fejlécek és láblécek
Section.HeadersFooters egy HeaderFooterCollection, amely típusos hozzáférőkkel rendelkezik – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – valamint GetByHeaderFooterType(), Add() és LinkToPrevious(). Minden HeaderFooter egy Story (mint a(z) Body), amelyet a(z) HeaderFooterType azonosít, és IsHeader / IsLinkedToPrevious jelzővel van ellátva. A(z) PageSetup.DifferentFirstPageHeaderFooter és PageSetup.OddAndEvenPagesHeaderFooter szabályozzák, hogy a Word elvárja-e az első oldal és a páros oldal fejléc/lábléc változatainak használatát.
Több szövegoszlop
PageSetup.TextColumns egy TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) ad vissza, amely SetCount() segítségével több oszlopban rendezi el a szakasz törzsét. Az egyes oszlopok TextColumn példányok (Width, SpaceAfter), miután a gyűjtemény több mint egy oszloppal van feltöltve.
Tippek és bevált gyakorlatok
- Egy szakaszváltó hordozza a formázást a szakasz számára, amely follows azt – beállítás
PageSetuptulajdonságok egySectionamelyet most hoztál létre (utánInsertBreak) befolyásolja a tartalmat, amely a törés után következik, nem pedig előtte. - Használd a(z)
SectionBreakContinuous-t, ha csak az oldalbeállításon kell módosítani (például többoszlopos szövegre váltás) új oldal indítása nélkül; használd a(z)SectionBreakNewPage-t, ha az új szakasznak mindig új oldalon kell kezdődnie. HeaderFooterCollection.LinkToPrevious()újracsatlakoztatja a szakasz fejléceit/láblécét, hogy örökölje az előző szakasz tartalmát – ezt a új fejléctartalom/lábléc tartalom írása előtt végezze el, ha azt szeretné, hogy az új szakasz független legyen az előzőtől.PageSetup.DifferentFirstPageHeaderFooterésOddAndEvenPagesHeaderFootercsak akkor lépnek életbe, ha a megfelelőHeaderFooterTypeváltozatok (HeaderFirst,HeaderEvenstb.) ténylegesen léteznek aSection.HeadersFooters-ben – kapcsolja be a jelzőt, és adja hozzá a megfelelő fejléceket/lábceket egyszerre.Section.Bodyés mindenHeaderFooterkülönállóStorypéldány — aRange.Fields, könyvjelzők és egyéb tartományra korlátozott műveletek a szakaszBody-jén nem hatolnak automatikusan be a fejlécekbe és láblécekbe.
Gyakori problémák
| Probléma | Ok | Javítás |
|---|---|---|
| Az új szakasz oldalbeállítása nem egyezik azzal, amit beállítottam | PageSetup a rossz Section példányra lett beállítva | Beállítás PageSetup az a szakasz, amely follows a törésnél, nem az előzőnél |
| Az előző szakasz fejléc/lábléc tartalma váratlanul megjelenik egy új szakaszban | Az új szakasz fejlécei/láblécai még mindig kapcsolódnak az előző szakaszhoz | Hívja meg a(z) HeaderFooterCollection.LinkToPrevious(false) (vagy adjon hozzá különálló fejléc/lábléc tartalmat) a leválasztáshoz |
| Az első oldal vagy páros oldal fejléc/lábléc figyelmen kívül van hagyva | DifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter false, vagy a megfelelő HeaderFooterType változat nem létezik | Állítsd be a jelzőt a(z) PageSetup elemen, és győződj meg róla, hogy a megfelelő fejléc/lábléc változat jelen van |
| A többoszlopos elrendezés nem alkalmazható | TextColumns.SetCount() 1-es számértékkel lett meghívva, vagy a rossz szakasz PageSetup elemén | Hívd meg a(z) SetCount() függvényt több, mint egy oszloppal a cél szakasz PageSetup.TextColumns elemén |
FAQ
Hogyan indíthatok új szakaszt anélkül, hogy új oldalt kezdenék?
Helyezzen be egy SectionBreakContinuous törést DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous) segítségével.
Hogyan adhatok egy szakasznak saját margókat és tájolást?
Helyezz be egy szakasztörést, majd állítsd be a tulajdonságokat az új szakasz PageSetup – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation és PaperSize értékeire.
Hogyan állíthatom be, hogy egy szakasz első oldala másik fejlécet használjon?
Állítsd be a PageSetup.DifferentFirstPageHeaderFooter = true értéket azon a szakaszon, és adj hozzá egy HeaderFooter típusú HeaderFirst (és FooterFirst, ha szükséges) a HeadersFooters gyűjteményéhez.
Hogyan rendezhetem el egy szakasz törzsszövegét két oszlopban?
Hívd meg a PageSetup.TextColumns.SetCount(2) a szakaszon, majd állítsd be a Spacing és EvenlySpaced / az egyes TextColumn.Width értékeket szükség szerint.
API Reference összefoglaló
| Osztály / Enum | Leírás |
|---|---|
Section | Egy szekció csomópont; Body, HeadersFooters, PageSetup |
SectionCollection | Minden Section a dokumentumban, a Document.Sections segítségével |
Body / Story | A fő tartalomkonténer egy szekcióhoz (Body) vagy fejléchez/lábléchez (HeaderFooter) |
PageSetup | Oldalméretek, margók, orientáció, szegélyek és oszlopok egy szekcióhoz |
HeaderFooter / HeaderFooterCollection | Fejléc/lábléc tartalom és a szekció típusos hozzáférői |
HeaderFooterType | Azonosítja, hogy egy HeaderFooter melyik fejléc/lábléc változat (primary, first, even) |
TextColumn / TextColumnCollection | Többoszlopos szövegelrendezés egy szekcióhoz |
PaperSize / Orientation / Margins | Oldalméret, tájolás és előre beállított margóértékek |
PageBorderAppliesTo / PageBorderDistanceFrom | Mely oldalakon nyomtatódik a lapkeret, és annak referenciája él |
SectionStart / BreakType | A szakaszon rögzített szakasz-törés típusa, és a DocumentBuilder.InsertBreak() által elfogadott töréstípusok |
LineNumberRestartMode | Amikor az automatikus sorszámozás egy szakaszon belül újraindul |