Travailler avec les sections

Travailler avec les sections

Travailler avec les sections

Un document Word est divisé en une ou plusieurs sections, chacune avec sa propre configuration de page, ses marges, ses en-têtes et ses pieds de page. Aspose.Words FOSS pour .NET représente une section comme une Section noeud, contenant un Body et, éventuellement, des en-têtes et des pieds de page, plus un PageSetup qui contrôle sa mise en page. Cette page couvre le modèle d’objet de section, la configuration de page, les en-têtes et pieds de page, et la mise en page du texte multicolonne.


Le modèle d’objet de section

Document.Sections renvoie un SectionCollection – chaque Section du document, chacun étant un CompositeNode et faisant partie de l’arbre de nœuds. Un Section contient un Body (un Story contenant les paragraphes et tableaux principaux de la section) et, lorsqu’il est présent, des nœuds HeaderFooter accessibles via Section.HeadersFooters, un HeaderFooterCollection. Document.FirstSection et Document.LastSection donnent un accès direct aux sections limites. Section.AppendContent(), PrependContent() et ClearContent() manipulent le contenu du corps d’une section en bloc, tandis que ClearHeadersFooters() et DeleteHeaderFooterShapes() effacent le contenu de l’en-tête/pied de page.


Créer des sections et des sauts de section

DocumentBuilder.InsertBreak(BreakType) insère un saut à la position du curseur ; BreakType inclut SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage et SectionBreakOddPage pour démarrer une nouvelle section, ainsi que les valeurs hors section PageBreak, ColumnBreak, LineBreak et ParagraphBreak. DocumentBuilder.MoveToSection() déplace le curseur au début du corps d’une section spécifique. PageSetup.SectionStart lit ou définit le type de saut SectionStart enregistré sur une section existante.


Configuration de page

Section.PageSetup est une instance PageSetup couvrant les dimensions de page et les marges (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation et PaperSize, et les bordures de page par côté (Borders, BorderAppliesTo via PageBorderAppliesTo, BorderDistanceFrom via PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). La numérotation des lignes est contrôlée par LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText et LineStartingNumber. PageSetup.ClearFormatting() la réinitialise aux valeurs par défaut.


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(), Add() et LinkToPrevious(). Chaque HeaderFooter est un Story (comme Body) identifié par son HeaderFooterType et marqué IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter et PageSetup.OddAndEvenPagesHeaderFooter contrôlent si Word attend que les variantes d’en-tête/pied de page de première page et de pages paires soient utilisées.


Colonnes de texte multiples

PageSetup.TextColumns renvoie un TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) avec SetCount() pour disposer le corps de la section en plusieurs colonnes. Les colonnes individuelles sont des instances TextColumn (Width, SpaceAfter) une fois la collection remplie avec plus d’une colonne.


Conseils et bonnes pratiques

  • Un saut de section porte le formatage de la section qui follows il – définit PageSetup propriétés sur un Section vous venez de créer (après InsertBreak) affecte le contenu qui vient après la pause, pas avant.
  • Utilisez SectionBreakContinuous lorsque vous avez seulement besoin d’un changement de configuration de page (par exemple, passer à du texte en colonnes multiples) sans démarrer une nouvelle page; utilisez SectionBreakNewPage lorsque la nouvelle section doit toujours commencer sur une page vierge.
  • HeaderFooterCollection.LinkToPrevious() reconnecte l’en-tête/pied-de-page d’une section pour hériter du contenu de la section précédente — faites-le avant d’écrire du nouveau contenu d’en-tête/pied-de-page si vous voulez que la nouvelle section commence de façon indépendante de la précédente.
  • PageSetup.DifferentFirstPageHeaderFooter et OddAndEvenPagesHeaderFooter ne prennent effet que si les variantes HeaderFooterType correspondantes (HeaderFirst, HeaderEven, etc.) existent réellement dans Section.HeadersFooters — activez le drapeau et ajoutez l’en-tête/pied-de-page correspondant ensemble.
  • Section.Body et chaque HeaderFooter sont des instances Story distinctes — Range.Fields, les signets et d’autres opérations limitées à une plage sur le Body de la section n’atteignent pas automatiquement ses en-têtes et pieds-de-page.

Problèmes courants

ProblèmeCauseCorrection
La configuration de la page de la nouvelle section ne correspond pas à ce que j’ai définiPageSetup a été défini sur la mauvaise instance SectionDéfinir PageSetup sur la section qui follows la coupure, pas celle qui la précède
Le contenu d’en-tête/pied de page de la section précédente apparaît de façon inattendue dans une nouvelle sectionLes en-têtes/pieds de page de la nouvelle section sont toujours liés à la section précédenteAppelez HeaderFooterCollection.LinkToPrevious(false) (ou ajoutez un contenu d’en-tête/pied de page distinct) pour les dissocier
L’en-tête/pied de page de première page ou de page paire est ignoréDifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter est false, ou la variante correspondante HeaderFooterType n’existe pasDéfinissez le drapeau sur PageSetup et assurez-vous que la variante d’en-tête/pied de page correspondante est présente
La mise en page multi-colonnes ne s’applique pasTextColumns.SetCount() a été appelé avec un nombre de 1, ou sur le PageSetup de la mauvaise sectionAppelez SetCount() avec plus d’une colonne sur le PageSetup.TextColumns de la section cible

FAQ

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

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

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

Insérez un saut de section, puis définissez les propriétés du PageSetup de la nouvelle section – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation et PaperSize.

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 mettre en page le texte du corps d’une section en deux colonnes?

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


API Reference Résumé

Classe / EnumDescription
SectionUn nœud de section ; Body, HeadersFooters, PageSetup
SectionCollectionChaque Section dans le document, via Document.Sections
Body / StoryConteneur principal du contenu pour une section (Body) ou un en-tête/pied de page (HeaderFooter)
PageSetupDimensions de la page, marges, orientation, bordures et colonnes pour une section
HeaderFooter / HeaderFooterCollectionContenu de l’en-tête/pied de page et les accesseurs typés pour une section
HeaderFooterTypeIdentifie quelle variante d’en-tête/pied de page (principal, premier, pair) un HeaderFooter est
TextColumn / TextColumnCollectionDisposition de texte à plusieurs colonnes pour une section
PaperSize / Orientation / MarginsTaille de page, orientation et valeurs de marge prédéfinies
PageBorderAppliesTo / PageBorderDistanceFromSur quelles pages une bordure de page s’imprime, et son bord de référence
SectionStart / BreakTypeType de rupture de section enregistré sur une section, et les types de rupture DocumentBuilder.InsertBreak() acceptent
LineNumberRestartModeLorsque la numérotation automatique des lignes redémarre dans une section

Voir aussi

 Français