Trabajando con secciones

Trabajando con Secciones

Un documento de Word se divide en una o más secciones, cada una con su propia configuración de página, márgenes, encabezados y pies de página. Aspose.Words FOSS para .NET representa una sección como un Section nodo, que contiene un Body y, opcionalmente, encabezados y pies de página, además de un PageSetup que controla su diseño. Esta página cubre el modelo de objeto de sección, la configuración de página, los encabezados y pies de página, y el diseño de texto en varias columnas.


El Modelo de Objeto de Sección

Document.Sections devuelve un SectionCollection – cada Section en el documento, cada uno un CompositeNode y parte del árbol de nodos. Un Section contiene un Body (un Story que contiene los párrafos y tablas principales de la sección) y, cuando está presente, nodos HeaderFooter accesibles a través de Section.HeadersFooters, un HeaderFooterCollection. Document.FirstSection y Document.LastSection proporcionan acceso directo a las secciones límite. Section.AppendContent(), PrependContent() y ClearContent() manipulan el contenido del cuerpo de una sección en bloque, mientras que ClearHeadersFooters() y DeleteHeaderFooterShapes() borran el contenido del encabezado/pie de página.


Creando Secciones y Saltos de Sección

DocumentBuilder.InsertBreak(BreakType) inserta un salto en el cursor; BreakType incluye SectionBreakNewPage, SectionBreakContinuous, SectionBreakNewColumn, SectionBreakEvenPage y SectionBreakOddPage para iniciar una nueva sección, junto con los valores que no son de sección PageBreak, ColumnBreak, LineBreak y ParagraphBreak. DocumentBuilder.MoveToSection() mueve el cursor al comienzo del cuerpo de una sección específica. PageSetup.SectionStart lee o establece el tipo de salto SectionStart registrado en una sección existente.


Configuración de página

Section.PageSetup es una instancia de PageSetup que cubre las dimensiones y márgenes de la página (PageWidth, PageHeight, TopMargin, BottomMargin, LeftMargin, RightMargin, Gutter), Orientation y PaperSize, y los bordes de página por lado (Borders, BorderAppliesTo mediante PageBorderAppliesTo, BorderDistanceFrom mediante PageBorderDistanceFrom, BorderAlwaysInFront, BorderSurroundsHeader, BorderSurroundsFooter). La numeración de líneas se controla mediante LineNumberRestartMode, LineNumberCountBy, LineNumberDistanceFromText y LineStartingNumber. PageSetup.ClearFormatting() lo restablece a los valores predeterminados.


Encabezados y pies de página

Section.HeadersFooters es un HeaderFooterCollection con accesores tipados – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – junto a GetByHeaderFooterType(), Add() y LinkToPrevious(). Cada HeaderFooter es un Story (como Body) identificado por su HeaderFooterType y marcado IsHeader / IsLinkedToPrevious. PageSetup.DifferentFirstPageHeaderFooter y PageSetup.OddAndEvenPagesHeaderFooter controlan si Word espera que se usen las variantes de encabezado/pie de página de primera página y de página par.


Múltiples columnas de texto

PageSetup.TextColumns devuelve un TextColumnCollection (Count, EvenlySpaced, LineBetween, Spacing, Width) con SetCount() para disponer el cuerpo de la sección en múltiples columnas. Las columnas individuales son instancias TextColumn (Width, SpaceAfter) una vez que la colección se llena con más de una columna.


Consejos y mejores prácticas

  • Un salto de sección lleva el formato de la sección que follows lo – configuración PageSetup propiedades en un Section acabas de crear (después InsertBreak) afecta al contenido que viene después del salto, no antes de él.
  • Utiliza SectionBreakContinuous cuando solo necesitas un cambio de configuración de página (por ejemplo, cambiar a texto en múltiples columnas) sin iniciar una nueva página; utiliza SectionBreakNewPage cuando la nueva sección debe comenzar siempre en una página nueva.
  • HeaderFooterCollection.LinkToPrevious() reconecta el encabezado/pie de página de una sección para heredar el contenido de la sección anterior – haga esto antes de escribir nuevo contenido de encabezado/pie de página si desea que la nueva sección comience independiente de la anterior.
  • PageSetup.DifferentFirstPageHeaderFooter y OddAndEvenPagesHeaderFooter solo tienen efecto si las variantes correspondientes de HeaderFooterType (HeaderFirst, HeaderEven, y así sucesivamente) realmente existen en Section.HeadersFooters – habilite la bandera y añada juntos el encabezado/pie de página correspondiente.
  • Section.Body y cada HeaderFooter son instancias separadas de Story – Range.Fields, marcadores y otras operaciones basadas en rangos en el Body de la sección no se extienden automáticamente a sus encabezados y pies de página.

Problemas comunes

ProblemaCausaSolución
La configuración de página de la nueva sección no coincide con lo que configuréPageSetup se estableció en la instancia Section incorrectaEstablecer PageSetup en la sección que follows el salto, no el anterior
El contenido del encabezado/pie de página de la sección anterior aparece inesperadamente en una nueva secciónLos encabezados/pies de página de la nueva sección aún están vinculados a la sección anteriorLlame a HeaderFooterCollection.LinkToPrevious(false) (o añada contenido de encabezado/pie de página distinto) para desvincularlos
El encabezado/pie de página de la primera página o de las páginas pares se ignoraDifferentFirstPageHeaderFooter / OddAndEvenPagesHeaderFooter es false, o la variante correspondiente de HeaderFooterType no existeEstablece la bandera en PageSetup y asegura que la variante correspondiente de encabezado/pie de página esté presente
El diseño de varias columnas no se aplicaTextColumns.SetCount() se llamó con un recuento de 1, o en el PageSetup de la sección incorrectaLlama a SetCount() con más de una columna en el PageSetup.TextColumns de la sección objetivo

FAQ

¿Cómo inicio una nueva sección sin iniciar una nueva página?

Inserte un salto SectionBreakContinuous con DocumentBuilder.InsertBreak(BreakType.SectionBreakContinuous).

¿Cómo le doy a una sección sus propios márgenes y orientación?

Inserte un salto de sección, luego establezca las propiedades en el PageSetup de la nueva sección – TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation y PaperSize.

¿Cómo hago que la primera página de una sección use un encabezado diferente?

Establezca PageSetup.DifferentFirstPageHeaderFooter = true en esa sección y añada un HeaderFooter de tipo HeaderFirst (y FooterFirst, si es necesario) a su colección HeadersFooters.

¿Cómo dispongo el texto del cuerpo de una sección en dos columnas?

Llame a PageSetup.TextColumns.SetCount(2) en la sección, luego ajuste Spacing y EvenlySpaced / valores individuales de TextColumn.Width según sea necesario.


API Reference Resumen

Clase / EnumeraciónDescripción
SectionUn nodo de sección; Body, HeadersFooters, PageSetup
SectionCollectionCada Section en el documento, mediante Document.Sections
Body / StoryContenedor principal de contenido para una sección (Body) o encabezado/pie de página (HeaderFooter)
PageSetupDimensiones de página, márgenes, orientación, bordes y columnas para una sección
HeaderFooter / HeaderFooterCollectionContenido de encabezado/pie de página y los accesores tipados para una sección
HeaderFooterTypeIdentifica cuál variante de encabezado/pie de página (primario, primero, par) es un HeaderFooter
TextColumn / TextColumnCollectionDiseño de texto de varias columnas para una sección
PaperSize / Orientation / MarginsTamaño de página, orientación y valores de margen predefinidos
PageBorderAppliesTo / PageBorderDistanceFromEn qué páginas se imprime un borde de página y su borde de referencia
SectionStart / BreakTypeTipo de salto de sección registrado en una sección, y los tipos de salto DocumentBuilder.InsertBreak() acepta
LineNumberRestartModeCuando la numeración automática de líneas se reinicia dentro de una sección

Ver también

 Español