Práce se sekcemi

Práce s oddíly

Dokument Word je rozdělen na jednu nebo více sekcí, z nichž každá má vlastní nastavení stránky, okraje, záhlaví a zápatí. Aspose.Words FOSS pro .NET představuje sekci jako Section uzel, obsahující Body a volitelně záhlaví a zápatí, plus PageSetup který řídí jeho rozvržení. Tato stránka popisuje model objektu sekce, nastavení stránky, záhlaví a zápatí a rozvržení textu do více sloupců.


Objektový model oddílu

Document.Sections vrací SectionCollection – každý Section v dokumentu, každý je CompositeNode a součástí stromu uzlů. Section obsahuje jeden Body ( Story, který obsahuje hlavní odstavce a tabulky oddílu) a v případě přítomnosti také uzly HeaderFooter přístupné přes Section.HeadersFooters, což je HeaderFooterCollection. Document.FirstSection a Document.LastSection poskytují přímý přístup k hraničním oddílům. Section.AppendContent(), PrependContent() a ClearContent() manipulují s obsahem těla oddílu hromadně, zatímco ClearHeadersFooters() a DeleteHeaderFooterShapes() vymazávají obsah záhlaví/zápatí.


Vytváření oddílů a zalomení oddílu

DocumentBuilder.InsertBreak(BreakType) vloží zalomení na pozici kurzoru; BreakType zahrnuje SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage a SectionBreakOddPage pro zahájení nového oddílu, spolu s hodnotami mimo oddíl PageBreak, ColumnBreak, LineBreak a ParagraphBreak. DocumentBuilder.MoveToSection() přesune kurzor na začátek těla konkrétního oddílu. PageSetup.SectionStart čte nebo nastavuje typ zalomení SectionStart zaznamenaný v existujícím oddílu.


Nastavení stránky

Section.PageSetup je PageSetup instance pokrývající rozměry stránky a okraje (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation a PaperSize, a okraje stránky na jednotlivých stranách (Borders, BorderAppliesTo přes PageBorderAppliesTo, BorderDistanceFrom přes PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). Číslování řádků je řízeno pomocí LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText a LineStartingNumber. PageSetup.ClearFormatting() resetuje nastavení na výchozí hodnoty.


Záhlaví a zápatí

Section.HeadersFooters je HeaderFooterCollection s typovanými přístupy – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – spolu s GetByHeaderFooterType(), Add() a LinkToPrevious(). Každý HeaderFooter je Story (např. Body) identifikovaný podle svého HeaderFooterType a označený jako IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter a PageSetup.OddAndEvenPagesHeaderFooter řídí, zda Word očekává použití variant záhlaví/zápatí pro první stránku a sudé stránky vůbec.


Více textových sloupců

PageSetup.TextColumns vrací TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) s SetCount() pro rozvržení těla sekce do více sloupců. Jednotlivé sloupce jsou TextColumn instance (Width, SpaceAfter) jakmile je kolekce naplněna více než jedním sloupcem.


Tipy a osvědčené postupy

  • Zlom sekce nese formátování pro sekci, která follows to – nastavení PageSetup vlastnosti na Section jste právě vytvořili (po InsertBreak) ovlivňuje obsah, který následuje po přerušení, ne před ním.
  • Použijte SectionBreakContinuous, když potřebujete změnu nastavení stránky (například přepnutí na více sloupců textu) bez zahájení nové stránky; použijte SectionBreakNewPage, když má nová sekce vždy začínat na čisté stránce.
  • HeaderFooterCollection.LinkToPrevious() znovu připojí header/footer sekce, aby zdědila obsah předchozí sekce – udělejte to před psaním nového obsahu header/footer, pokud chcete, aby nová sekce začínala nezávisle na předchozí.
  • PageSetup.DifferentFirstPageHeaderFooter a OddAndEvenPagesHeaderFooter se projeví pouze v případě, že odpovídající varianty HeaderFooterType (HeaderFirst, HeaderEven a tak dále) skutečně existují v Section.HeadersFooters – zapněte příznak a přidejte odpovídající header/footer společně.
  • Section.Body a každý HeaderFooter jsou samostatné instance Story – Range.Fields, bookmarks a další operace omezené na rozsah v Body sekce automaticky nezasahují do jejích header/footer.

Časté problémy

ProblémPříčinaOprava
Nastavení stránky nové sekce neodpovídá tomu, co jsem nastavilPageSetup byl nastaven na špatnou Section instanciNastavit PageSetup na sekci, která follows přerušení, ne to předchozí
Obsah záhlaví/pati z předchozí sekce se neočekávaně objeví v nové sekciZáhlaví/paty nové sekce jsou stále propojeny s předchozí sekcíZavolejte HeaderFooterCollection.LinkToPrevious(false) (nebo přidejte odlišný obsah záhlaví/pati), aby se odpojily
Záhlaví/pata první stránky nebo sudé stránky je ignorovánoDifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter je false, nebo odpovídající varianta HeaderFooterType neexistujeNastavte příznak na PageSetup a ujistěte se, že odpovídající varianta záhlaví/pati je přítomna
Vícesloupcové rozvržení se nepoužijeTextColumns.SetCount() byl zavolán s počtem 1, nebo ve špatné sekci PageSetupVyvolejte SetCount() s více než jedním sloupcem na PageSetup.TextColumns cílové sekce

FAQ

Jak mohu začít novou sekci, aniž bych začínal novou stránku?

Vložte SectionBreakContinuous přerušení s DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

Jak mohu sekci přiřadit vlastní okraje a orientaci?

Vložte zalomení sekce, pak nastavte vlastnosti v novém oddílu PageSetup – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation a PaperSize.

Jak mohu nastavit, aby první stránka sekce používala jiné záhlaví?

Nastavte PageSetup.DifferentFirstPageHeaderFooter = true v této sekci a přidejte HeaderFooter typu HeaderFirst (a FooterFirst, pokud je potřeba) do její kolekce HeadersFooters.

Jak rozvrhnout tělo textu sekce do dvou sloupců?

Zavolejte PageSetup.TextColumns.SetCount(2) na sekci a poté upravte Spacing a EvenlySpaced / jednotlivé hodnoty TextColumn.Width podle potřeby.


API Reference Shrnutí

Třída / výčetPopis:
SectionUzel sekce; Body, HeadersFooters, PageSetup
SectionCollectionKaždý Section v dokumentu, přes Document.Sections
Body / StoryHlavní kontejner obsahu pro sekci (Body) nebo hlavičku/patku (HeaderFooter)
PageSetupRozměry stránky, okraje, orientace, ohraničení a sloupce pro sekci
HeaderFooter / HeaderFooterCollectionObsah záhlaví/patičky a typované přístupové metody pro sekci
HeaderFooterTypeUrčuje, která varianta záhlaví/zápatí (primary, first, even) je u HeaderFooter
TextColumn / TextColumnCollectionVícesloupcové rozvržení textu pro sekci
PaperSize / Orientation / MarginsVelikost stránky, orientace a předdefinované hodnoty okrajů
PageBorderAppliesTo / PageBorderDistanceFromNa kterých stránkách se okraj stránky tiskne a jaký je jeho referenční okraj
SectionStart / BreakTypeTyp oddílu přerušení zaznamenaný v sekci a druhy přerušení, které DocumentBuilder.InsertBreak() přijímá
LineNumberRestartModeKdyž se automatické číslování řádků restartuje v rámci sekce

Viz také:

 Čeština