Comment travailler avec les sections dans .NET

Comment travailler avec les sections dans .NET

Ce guide montre comment créer des sauts de section, configurer la mise en page et gérer les en-têtes, pieds de page et la mise en page multi-colonnes dans Aspose.Words FOSS for .NET, en utilisant les Section and PageSetup classes. Il couvre la lecture des sections déjà présentes dans un document, le démarrage d’une nouvelle section avec DocumentBuilder, configuration des dimensions et marges de page, ajout de variantes d’en-tête et de pied de page, et mise en page du texte principal en plusieurs colonnes.

Guide étape par étape

Étape 1: Installer le package

Aspose.Words FOSS for .NET ne publie pas encore de package NuGet — construisez la bibliothèque à partir des sources à la place. Clonez https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, puis compilez Aspose.Words.sln en configuration Release avec le SDK .NET et référencez l’assembly Aspose.Words résultant depuis votre projet. La bibliothèque cible .NET Standard 2.0, elle s’exécute donc sur le Framework .NET 4.6.2+ et .NET 6/8/10.


Étape 2: Importer les classes requises

Ajoutez une directive using Aspose.Words; — Section, PageSetup, HeaderFooter, et les énumérations associées utilisées dans ce guide se trouvent directement dans l’espace de noms Aspose.Words aux côtés de Document et DocumentBuilder.


Étape 3 : Lire les sections déjà présentes dans un document

Document.Sections renvoie un SectionCollection contenant chaque Section du document, chacun étant un CompositeNode qui fait également partie de l’arbre de nœuds global. Document.FirstSection et Document.LastSection donnent un accès direct aux sections limites sans parcourir la collection. Chaque Section contient un Body – atteint de la même manière que tout autre Story – et, lorsqu’il est présent, le contenu d’en-tête et de pied de page accessible via Section.HeadersFooters.


Étape 4 : Démarrer une nouvelle section avec un saut de section

Call DocumentBuilder.InsertBreak(BreakType) à l’endroit du curseur pour démarrer une nouvelle section. Pass BreakType.SectionBreakNewPage lorsque la nouvelle section doit toujours commencer sur une nouvelle page, BreakType.SectionBreakContinuous lorsque seul un changement de configuration de page est nécessaire (par exemple, passer à du texte multi-colonnes) sans imposer de saut de page, ou BreakType.SectionBreakNewColumn, SectionBreakEvenPage, et SectionBreakOddPage pour les autres comportements de démarrage de section que Word prend en charge. Un saut de section conserve le formatage pour la section qui follows elle, donc définissez PageSetup propriétés sur le nouveau Section – pas celle qui le précède – une fois le saut inséré. DocumentBuilder.MoveToSection(sectionIndex) déplace le curseur au début du corps d’une section spécifique, et PageSetup.SectionStart lit ou définit le SectionStart type de saut déjà enregistré sur une section existante.


Étape 5 : Configurer les dimensions de page et les marges

Chaque Section.PageSetup est une instance PageSetup. Définissez PageWidth, PageHeight, LeftMargin, RightMargin, TopMargin, BottomMargin et Gutter pour les dimensions de page et les marges, ou attribuez un préréglage Margins directement à PageSetup.Margins. Orientation et PaperSize contrôlent l’orientation de la page et le format du papier. Les bordures de page sont configurées avec Borders (un BorderCollection), BorderAppliesTo (PageBorderAppliesTo), BorderDistanceFrom (PageBorderDistanceFrom), BorderAlwaysInFront, BorderSurroundsHeader et BorderSurroundsFooter. Appelez PageSetup.ClearFormatting() pour réinitialiser la configuration de page d’une section aux valeurs par défaut avant de la configurer à partir de zéro.


Étape 6 : Ajouter et lier les en-têtes et pieds de page

Section.HeadersFooters est un HeaderFooterCollection avec des accesseurs typés – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – ainsi que GetByHeaderFooterType() pour la recherche par HeaderFooterType et Add() afin d’en ajouter un nouveau. Chaque HeaderFooter est un Story, signalé IsHeader et IsLinkedToPrevious. Activez PageSetup.DifferentFirstPageHeaderFooter ou PageSetup.OddAndEvenPagesHeaderFooter avant d’ajouter la variante correspondante HeaderFirst/FooterFirst ou HeaderEven/FooterEven — le drapeau et la variante ne prennent effet qu’ensemble. Appelez HeaderFooterCollection.LinkToPrevious() pour reconnecter l’en-tête ou le pied de page d’une section afin d’hériter du contenu de la section précédente, ou pour le détacher afin que la nouvelle section commence avec un contenu indépendant.


Étape 7: Disposer le texte du corps en plusieurs colonnes

PageSetup.TextColumns renvoie un TextColumnCollection pour la section. Appelez SetCount() avec le nombre de colonnes dans lesquelles le texte du corps doit s’écouler, puis ajustez EvenlySpaced, Spacing, LineBetween et Width pour contrôler la disposition des colonnes. Une fois que la collection comporte plus d’une colonne, les instances individuelles de TextColumn exposent leurs propres Width et SpaceAfter.


Étape 8: Effacer ou modifier en masse le contenu de la section

Section.AppendContent() et PrependContent() copient le contenu du corps d’une autre section dans celle-ci; ClearContent() vide le corps d’une section en masse. ClearHeadersFooters() et DeleteHeaderFooterShapes() effacent le contenu de l’en-tête et du pied de page dans toute la section sans supprimer la section elle-même.

Problèmes courants et solutions

La configuration de page d’une nouvelle section ne correspond pas à ce que j’ai défini PageSetup a été définie sur le mauvais Section instance. Un saut de section transporte le formatage pour la section qui la suit – définissez PageSetup sur la section qui vient après InsertBreak(), pas celle qui la précède.

Le contenu d’en-tête ou de pied de page de la section précédente apparaît de manière inattendue dans une nouvelle L’en-tête ou le pied de page de la nouvelle section est toujours lié à la section précédente. Appelez HeaderFooterCollection.LinkToPrevious(false), ou ajoutez un contenu d’en-tête/pied de page distinct à la nouvelle section, pour le dissocier.

L’en-tête/pied de page de première page ou de page paire est ignoré DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, ou la correspondance HeaderFooterType variante n’existe pas dans Section.HeadersFooters. Définissez le drapeau sur PageSetup et ajoutez la variante d’en-tête/pied de page correspondante ensemble.

mise en page à colonnes multiples ne s’applique pas TextColumns.SetCount() a été appelée avec un compte de un, ou sur la mauvaise section PageSetup. Appelez SetCount() avec plus d’une colonne sur la section cible PageSetup.TextColumns.

Saut de section inséré à la mauvaise position du document DocumentBuilder.InsertBreak(BreakType) insère à la position actuelle du curseur du constructeur. Utilisez DocumentBuilder.MoveToSection() ou les autres membres de positionnement du curseur du constructeur pour positionner le curseur avant d’appeler InsertBreak().

Foire aux questions

Comment démarrer une nouvelle section sans commencer une nouvelle page?

Insérez un saut SectionBreakContinuous avec DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

Comment attribuer à une section ses propres marges et son orientation?

Insérez un saut de section, puis définissez TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation et PaperSize sur le PageSetup de la nouvelle section.

Comment faire en sorte que la première page d’une section utilise un en-tête différent?

Définissez PageSetup.DifferentFirstPageHeaderFooter = true sur cette section, et ajoutez un HeaderFooter de type HeaderFirst (et FooterFirst, si nécessaire) à sa collection HeadersFooters.

Comment disposer le texte du corps d’une section en deux colonnes?

Appelez PageSetup.TextColumns.SetCount(2) sur la section, puis ajustez Spacing, EvenlySpaced ou les valeurs individuelles de TextColumn.Width selon les besoins.

Comment accéder directement aux sections première et dernière?

Lisez Document.FirstSection et Document.LastSection au lieu d’indexer dans Document.Sections.

Voir aussi

 Français