Wie man mit Abschnitten in .NET arbeitet

Wie man mit Abschnitten in .NET arbeitet

Dieses Handbuch zeigt, wie man Abschnittsumbrüche erstellt, die Seiteneinrichtung konfiguriert und Kopf-, Fußzeilen sowie ein mehrspaltiges Layout verwaltet in Aspose.Words FOSS für .NET, unter Verwendung der Section and PageSetup Klassen. Es deckt das Lesen der bereits in einem Dokument vorhandenen Abschnitte, das Starten eines neuen Abschnitts mit DocumentBuilder, Konfigurieren von Seitenabmessungen und Rändern, Hinzufügen von Kopf- und Fußzeilenvarianten sowie das Layout von Fließtext in mehreren Spalten.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

Aspose.Words FOSS für .NET veröffentlicht noch kein NuGet-Paket – bauen Sie die Bibliothek stattdessen aus dem Quellcode. Klonen Sie https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, dann bauen Sie Aspose.Words.sln in der Release-Konfiguration mit dem .NET-SDK und binden die resultierende Aspose.Words-Assembly in Ihr Projekt ein. Die Bibliothek zielt auf .NET Standard 2.0 ab, sodass sie auf .NET Framework 4.6.2+ und .NET 6/8/10 läuft.


Schritt 2: Erforderliche Klassen importieren

Fügen Sie eine using Aspose.Words;-Direktive hinzu – Section, PageSetup, HeaderFooter und die in diesem Handbuch verwendeten zugehörigen Enums befinden sich direkt im Aspose.Words-Namespace zusammen mit Document und DocumentBuilder.


Schritt 3: Lesen Sie die bereits im Dokument vorhandenen Abschnitte

Document.Sections gibt ein SectionCollection zurück, das jede Section im Dokument enthält, jeweils ein CompositeNode, das ebenfalls Teil des gesamten Knotensbaums ist. Document.FirstSection und Document.LastSection ermöglichen direkten Zugriff auf die Randabschnitte, ohne die Sammlung zu iterieren. Jeder Section enthält ein Body – auf dieselbe Weise erreicht wie jedes andere Story – und, falls vorhanden, Header- und Footer-Inhalte, die über Section.HeadersFooters erreicht werden.


Schritt 4: Starten Sie einen neuen Abschnitt mit einem Abschnittsumbruch

Call DocumentBuilder.InsertBreak(BreakType) am Cursor, um einen neuen Abschnitt zu beginnen. Übergeben BreakType.SectionBreakNewPage wenn der neue Abschnitt immer auf einer frischen Seite beginnen soll, BreakType.SectionBreakContinuous wenn nur eine Änderung der Seiteneinrichtung erforderlich ist (z. B. das Umschalten auf mehrspaltigen Text), ohne einen Seitenumbruch zu erzwingen, oder BreakType.SectionBreakNewColumn, SectionBreakEvenPage, und SectionBreakOddPage für die anderen Abschnitt-Start-Verhalten, die Word unterstützt. Ein Abschnittsumbruch trägt die Formatierung für den Abschnitt, der follows ihn, also setze PageSetup Eigenschaften am neuen Section – nicht das davor – sobald der Umbruch eingefügt ist. DocumentBuilder.MoveToSection(sectionIndex) bewegt den Cursor zum Beginn des Textkörpers eines bestimmten Abschnitts und PageSetup.SectionStart liest oder setzt die SectionStart Umbruchart, die bereits in einem bestehenden Abschnitt aufgezeichnet wurde.


Schritt 5: Seitenabmessungen und Ränder konfigurieren

Jeder Section.PageSetup ist eine PageSetup-Instanz. Setzen Sie PageWidth, PageHeight, LeftMargin, RightMargin, TopMargin, BottomMargin und Gutter für Seitenabmessungen und Ränder, oder weisen Sie ein Margins-Voreinstellungsprofil direkt PageSetup.Margins zu. Orientation und PaperSize steuern die Seitenausrichtung und das Papierformat. Seitenränder werden mit Borders (ein BorderCollection), BorderAppliesTo (PageBorderAppliesTo), BorderDistanceFrom (PageBorderDistanceFrom), BorderAlwaysInFront, BorderSurroundsHeader und BorderSurroundsFooter konfiguriert. Rufen Sie PageSetup.ClearFormatting() auf, um das Seiteneinrichtungssetup eines Abschnitts auf die Standardwerte zurückzusetzen, bevor Sie es von Grund auf neu konfigurieren.


Schritt 6: Kopf- und Fußzeilen hinzufügen und verknüpfen

Section.HeadersFooters ist ein HeaderFooterCollection mit typisierten Zugriffen – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – sowie GetByHeaderFooterType() für die Suche nach HeaderFooterType und Add(), um ein neues hinzuzufügen. Jeder HeaderFooter ist ein Story, markiert mit IsHeader und IsLinkedToPrevious. Aktivieren Sie PageSetup.DifferentFirstPageHeaderFooter oder PageSetup.OddAndEvenPagesHeaderFooter, bevor Sie die entsprechende HeaderFirst/FooterFirst- oder HeaderEven/FooterEven-Variante hinzufügen – die Markierung und die Variante wirken nur gemeinsam. Rufen Sie HeaderFooterCollection.LinkToPrevious() auf, um die Kopf- oder Fußzeile eines Abschnitts wieder mit dem Inhalt des vorherigen Abschnitts zu verknüpfen, oder um die Verknüpfung zu lösen, sodass der neue Abschnitt mit eigenständigem Inhalt beginnt.


Schritt 7: Fließtext in mehreren Spalten anordnen

PageSetup.TextColumns gibt ein TextColumnCollection für den Abschnitt zurück. Rufen Sie SetCount() mit der Anzahl der Spalten auf, in die der Fließtext fließen soll, und passen Sie dann EvenlySpaced, Spacing, LineBetween und Width an, um zu steuern, wie die Spalten angeordnet werden. Sobald die Sammlung mehr als eine Spalte enthält, zeigen einzelne TextColumn-Instanzen ihre eigenen Width und SpaceAfter.


Schritt 8: Abschnittsinhalte löschen oder massenweise bearbeiten

Section.AppendContent() und PrependContent() kopieren den Fließtext eines anderen Abschnitts in diesen; ClearContent() leert den Fließtext eines Abschnitts massenweise. ClearHeadersFooters() und DeleteHeaderFooterShapes() löschen Header- und Footer-Inhalte im gesamten Abschnitt, ohne den Abschnitt selbst zu entfernen.

Häufige Probleme und Lösungen

Das Seiten-Setup eines neuen Abschnitts stimmt nicht mit dem überein, was ich festgelegt habe PageSetup wurde auf dem falschen Section Instanz. Ein Abschnittswechsel übernimmt die Formatierung für den folgenden Abschnitt – set PageSetup auf den Abschnitt, der danach kommt InsertBreak(), nicht den davor.

Kopf- oder Fußzeileninhalt aus dem vorherigen Abschnitt erscheint unerwartet in einem neuen Die Kopf- oder Fußzeile des neuen Abschnitts ist noch mit dem vorherigen Abschnitt verknüpft. Rufen HeaderFooterCollection.LinkToPrevious(false), oder fügen Sie eindeutigen Kopf-/Fußzeileninhalt zum neuen Abschnitt hinzu, um die Verknüpfung zu entfernen.

Kopf- oder Fußzeile der ersten bzw. geraden Seite wird ignoriert DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, oder das passende HeaderFooterType Variante existiert nicht in Section.HeadersFooters. Setze das Flag auf PageSetup und füge die entsprechende Kopf-/Fußzeilenvariante hinzu.

Mehrspaltenlayout gilt nicht TextColumns.SetCount() wurde mit einer Zählung von eins aufgerufen, oder im falschen Abschnitt PageSetup. Aufrufen SetCount() mit mehr als einer Spalte im Zielabschnitt PageSetup.TextColumns.

Abschnittswechsel an falscher Dokumentposition eingefügt DocumentBuilder.InsertBreak(BreakType) fügt am aktuellen Cursor des Builders ein. Verwenden Sie DocumentBuilder.MoveToSection() oder die anderen Cursor-Positionierungs-Member des Builders, um den Cursor vor dem Aufruf zu positionieren InsertBreak().

Häufig gestellte Fragen

Wie starte ich einen neuen Abschnitt, ohne eine neue Seite zu beginnen?

Fügen Sie einen SectionBreakContinuous-Umbruch mit DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous) ein.

Wie gebe ich einem Abschnitt eigene Ränder und Ausrichtung?

Fügen Sie einen Abschnittswechsel ein, dann setzen Sie TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation und PaperSize im PageSetup des neuen Abschnitts.

Wie kann ich die erste Seite eines Abschnitts mit einer anderen Kopfzeile versehen?

Setze PageSetup.DifferentFirstPageHeaderFooter = true für diesen Abschnitt und füge ein HeaderFooter vom Typ HeaderFirst (und FooterFirst, falls nötig) zu seiner HeadersFooters-Sammlung hinzu.

Wie lege ich den Fließtext eines Abschnitts in zwei Spalten an?

Rufe PageSetup.TextColumns.SetCount(2) für den Abschnitt auf und passe dann nach Bedarf Spacing, EvenlySpaced oder einzelne TextColumn.Width-Werte an.

Wie greife ich direkt auf den ersten und letzten Abschnitt zu?

Lese Document.FirstSection und Document.LastSection anstatt in Document.Sections zu indizieren.

Siehe auch

 Deutsch