Jak pracovat s oddíly v .NET

Jak pracovat s oddíly v .NET

Tento průvodce ukazuje, jak vytvořit zalomení sekcí, nastavit rozvržení stránky a spravovat záhlaví, zápatí a vícesloupcové rozvržení v Aspose.Words FOSS pro .NET, pomocí Section and PageSetup třídy. Pokrývá čtení sekcí již v dokumentu, zahájení nové sekce s DocumentBuilder, nastavením rozměrů stránky a okrajů, přidáním variant záhlaví a zápatí a rozvržením těla textu do více sloupců.

Průvodce krok za krokem

Krok 1: Nainstalujte balíček

Aspose.Words FOSS pro .NET zatím nepublikuje balíček NuGet – místo toho sestavte knihovnu ze zdrojového kódu. Naklonujte https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, poté sestavte Aspose.Words.sln v konfiguraci Release pomocí SDK .NET a odkažte na výsledný Aspose.Words assembly z vašeho projektu. Knihovna cílí na .NET Standard 2.0, takže běží na .NET Framework 4.6.2+ a .NET 6/8/10.


Krok 2: Importujte požadované třídy

Přidejte direktivu using Aspose.Words; – Section, PageSetup, HeaderFooter a související výčty použité v tomto průvodci jsou přímo v jmenném prostoru Aspose.Words vedle Document a DocumentBuilder.


Krok 3: Přečíst sekce, které jsou již v dokumentu

Document.Sections vrací SectionCollection, která obsahuje každou Section v dokumentu, každou CompositeNode, která je také součástí celkového stromu uzlů. Document.FirstSection a Document.LastSection poskytují přímý přístup k okrajovým sekcím bez iterace kolekce. Každý Section obsahuje jeden Body – dosažený stejným způsobem jako jakýkoli jiný Story – a pokud je přítomen, obsah záhlaví a zápatí dosažený přes Section.HeadersFooters.


Krok 4: Zahájit novou sekci s přerušením sekce

Call DocumentBuilder.InsertBreak(BreakType) na kurzoru pro zahájení nové sekce. Předat BreakType.SectionBreakNewPage když by nová sekce měla vždy začínat na čisté stránce, BreakType.SectionBreakContinuous když je potřeba jen změna nastavení stránky (například přepnutí na vícesloupcový text) bez vynucení zalomení stránky, nebo BreakType.SectionBreakNewColumn, SectionBreakEvenPage, a SectionBreakOddPage pro ostatní section-start behaviors, které Word podporuje. Section break nese formátování pro sekci, která follows ji, takže nastavte PageSetup vlastnosti na novém Section – ne na té předchozí – jakmile je break vložen. DocumentBuilder.MoveToSection(sectionIndex) přesune kurzor na začátek těla konkrétní sekce, a PageSetup.SectionStart čte nebo nastavuje SectionStart break type již zaznamenaný v existující sekci.


Krok 5: Nastavit rozměry stránky a okraje

Každý Section.PageSetup je instance PageSetup. Nastavte PageWidth, PageHeight, LeftMargin, RightMargin, TopMargin, BottomMargin a Gutter pro rozměry stránky a okraje, nebo přiřaďte předvolbu Margins přímo k PageSetup.Margins. Orientation a PaperSize řídí orientaci stránky a velikost papíru. Okraje stránky se konfiguruje pomocí Borders (jedná se o BorderCollection), BorderAppliesTo (PageBorderAppliesTo), BorderDistanceFrom (PageBorderDistanceFrom), BorderAlwaysInFront, BorderSurroundsHeader a BorderSurroundsFooter. Zavolejte PageSetup.ClearFormatting() pro resetování nastavení stránky sekce na výchozí hodnoty před tím, než jej nastavíte od začátku.


Krok 6: Přidat a propojit záhlaví a zápatí

Section.HeadersFooters je HeaderFooterCollection s typovanými přístupovými metodami – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – vedle GetByHeaderFooterType() pro vyhledávání podle HeaderFooterType a Add() při přidávání nového. Každý HeaderFooter je Story, označený jako IsHeader a IsLinkedToPrevious. Povolte PageSetup.DifferentFirstPageHeaderFooter nebo PageSetup.OddAndEvenPagesHeaderFooter před přidáním odpovídající varianty HeaderFirst/FooterFirst nebo HeaderEven/FooterEven – příznak a varianta se projeví pouze společně. Zavolejte HeaderFooterCollection.LinkToPrevious() pro opětovné připojení záhlaví nebo zápatí sekce, aby zdědilo obsah předchozí sekce, nebo jej odpojte, aby nová sekce začala s nezávislým obsahem.


Krok 7: Rozvržení těla textu do více sloupců

PageSetup.TextColumns vrací TextColumnCollection pro sekci. Zavolejte SetCount() s počtem sloupců, do kterých má tělo textu proudit, pak upravte EvenlySpaced, Spacing, LineBetween a Width, abyste řídili, jak jsou sloupce rozvrženy. Jakmile kolekce obsahuje více než jeden sloupec, jednotlivé instance TextColumn odhalí své vlastní Width a SpaceAfter.


Krok 8: Vymazat nebo hromadně upravit obsah sekce

Section.AppendContent() a PrependContent() zkopírují tělo obsahu jiné sekce do této; ClearContent() vyprázdní tělo sekce hromadně. ClearHeadersFooters() a DeleteHeaderFooterShapes() vymažou obsah hlavičky a patičky napříč sekcí, aniž by odstranily samotnou sekci.

Časté problémy a opravy

Nastavení stránky nového oddílu neodpovídá tomu, co jsem nastavil PageSetup bylo nastaveno na špatném Section instanci. Přerušení sekce nese formátování pro sekci, která následuje – nastaveno PageSetup v sekci, která následuje InsertBreak(), nikoli v té předchozí.

Obsah záhlaví nebo zápatí z předchozí sekce se neočekávaně objeví v nové Záhlaví či zápatí nové sekce je stále propojeno s předchozí sekcí. Zavolejte HeaderFooterCollection.LinkToPrevious(false), nebo přidejte odlišný obsah záhlaví/zápatí do nové sekce, abyste jej odpojili.

Záhlaví nebo zápatí první nebo sudé stránky je ignorováno DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, nebo odpovídající HeaderFooterType varianta neexistuje v Section.HeadersFooters. Nastavte příznak na PageSetup a přidejte odpovídající variantu záhlaví/pati společně.

Vícesloupcové rozložení se nepoužije TextColumns.SetCount() byl zavolán s počtem jedna, nebo na nesprávné sekci PageSetup. Zavolejte SetCount() s více než jedním sloupcem na cílové sekci PageSetup.TextColumns.

Přerušení sekce vloženo na nesprávné místo v dokumentu DocumentBuilder.InsertBreak(BreakType) vkládá na aktuální kurzor tvůrce. Použijte DocumentBuilder.MoveToSection() nebo jiné členy builderu pro nastavení pozice kurzoru, aby se kurzor umístil před voláním InsertBreak().

Často kladené otázky

Jak mohu zahájit novou sekci bez zahájení nové stránky?

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

Jak mohu nastavit sekci s vlastními okraji a orientací?

Vložte přerušení sekce, potom nastavte TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation a PaperSize na PageSetup nové sekce.

Jak mohu udělat, aby první stránka sekce používala jinou hlavičku?

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

Jak rozložit text těla sekce do dvou sloupců?

Zavolejte PageSetup.TextColumns.SetCount(2) na sekci, pak podle potřeby upravte Spacing, EvenlySpaced nebo jednotlivé TextColumn.Width.

Jak mohu přímo přistupovat k první a poslední sekci?

Přečtěte Document.FirstSection a Document.LastSection místo indexování do Document.Sections.

Viz také:

 Čeština