Cómo trabajar con secciones en .NET

Cómo trabajar con secciones en .NET

Esta guía muestra cómo crear saltos de sección, configurar la configuración de página y gestionar encabezados, pies de página y el diseño de varias columnas en Aspose.Words FOSS para .NET, usando los Section and PageSetup clases. Cubre la lectura de las secciones ya presentes en un documento, iniciar una nueva sección con DocumentBuilder, configurando dimensiones y márgenes de página, añadiendo variantes de encabezado y pie de página, y disponiendo el texto del cuerpo en varias columnas.

Guía paso a paso

Paso 1: Instalar el paquete

Aspose.Words FOSS para .NET aún no publica un paquete NuGet – construye la biblioteca desde el código fuente en su lugar. Clona https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git, luego construye Aspose.Words.sln en configuración Release con el .NET SDK y referencia el ensamblado Aspose.Words resultante desde tu proyecto. La biblioteca tiene como objetivo .NET Standard 2.0, por lo que se ejecuta en .NET Framework 4.6.2+ y .NET 6/8/10.


Paso 2: Importar las clases requeridas

Agregue una directiva using Aspose.Words; – Section, PageSetup, HeaderFooter y los enums relacionados usados en esta guía se encuentran directamente en el espacio de nombres Aspose.Words, junto a Document y DocumentBuilder.


Paso 3: Leer las secciones ya presentes en un documento

Document.Sections devuelve un SectionCollection que contiene cada Section en el documento, cada uno un CompositeNode que también forma parte del árbol de nodos global. Document.FirstSection y Document.LastSection proporcionan acceso directo a las secciones de límite sin iterar la colección. Cada Section contiene un Body – alcanzado de la misma manera que cualquier otro Story – y, cuando está presente, el contenido de encabezado y pie de página alcanzado a través de Section.HeadersFooters.


Paso 4: Iniciar una nueva sección con un salto de sección

Call DocumentBuilder.InsertBreak(BreakType) en el cursor para iniciar una nueva sección. Pase BreakType.SectionBreakNewPage cuando la nueva sección siempre debe comenzar en una página nueva, BreakType.SectionBreakContinuous cuando solo se necesita un cambio en la configuración de página (por ejemplo, cambiar a texto de varias columnas) sin forzar un salto de página, o BreakType.SectionBreakNewColumn, SectionBreakEvenPage, y SectionBreakOddPage para los otros comportamientos de inicio de sección que admite Word. follows lo, así que establezca PageSetup propiedades en el nuevo Section – no el anterior – una vez que se inserta el salto. DocumentBuilder.MoveToSection(sectionIndex) mueve el cursor al inicio del cuerpo de una sección específica, y PageSetup.SectionStart lee o establece el SectionStart tipo de salto ya registrado en una sección existente.


Paso 5: Configurar dimensiones y márgenes de página

Cada Section.PageSetup es una instancia de PageSetup. Establece PageWidth, PageHeight, LeftMargin, RightMargin, TopMargin, BottomMargin y Gutter para las dimensiones y márgenes de página, o asigna una preconfiguración Margins directamente a PageSetup.Margins. Orientation y PaperSize controlan la orientación de página y el tamaño del papel. Los bordes de página se configuran con Borders (un BorderCollection), BorderAppliesTo (PageBorderAppliesTo), BorderDistanceFrom (PageBorderDistanceFrom), BorderAlwaysInFront, BorderSurroundsHeader y BorderSurroundsFooter. Llama a PageSetup.ClearFormatting() para restablecer la configuración de página de una sección a los valores predeterminados antes de configurarla desde cero.


Paso 6: Añadir y enlazar encabezados y pies de página

Section.HeadersFooters es un HeaderFooterCollection con accesores tipados – HeaderPrimary, HeaderFirst, HeaderEven, FooterPrimary, FooterFirst, FooterEven – junto a GetByHeaderFooterType() para buscar por HeaderFooterType y Add() y añadir uno nuevo. Cada HeaderFooter es un Story, marcado IsHeader y IsLinkedToPrevious. Habilita PageSetup.DifferentFirstPageHeaderFooter o PageSetup.OddAndEvenPagesHeaderFooter antes de agregar la variante correspondiente HeaderFirst/FooterFirst o HeaderEven/FooterEven – la bandera y la variante solo surten efecto juntas. Llama a HeaderFooterCollection.LinkToPrevious() para volver a conectar el encabezado o pie de página de una sección y heredar el contenido de la sección anterior, o para desconectarlo de modo que la nueva sección comience con contenido independiente.


Paso 7: Distribuir el texto del cuerpo en varias columnas

PageSetup.TextColumns devuelve un TextColumnCollection para la sección. Llame a SetCount() con el número de columnas en que debe fluir el texto del cuerpo, luego ajuste EvenlySpaced, Spacing, LineBetween y Width para controlar cómo se disponen las columnas. Una vez que la colección contiene más de una columna, las instancias individuales de TextColumn exponen sus propios Width y SpaceAfter.


Paso 8: Borrar o editar en bloque el contenido de la sección

Section.AppendContent() y PrependContent() copian el contenido del cuerpo de otra sección a esta; ClearContent() vacía el cuerpo de una sección en bloque. ClearHeadersFooters() y DeleteHeaderFooterShapes() borran el contenido del encabezado y pie de página en toda la sección sin eliminar la propia sección.

Problemas comunes y soluciones

La configuración de página de una nueva sección no coincide con lo que establecí PageSetup se estableció en el incorrecto Section instancia. Un salto de sección lleva el formato para la sección que le sigue – establecer PageSetup en la sección que viene después InsertBreak(), no la que está antes.

El contenido del encabezado o pie de página de la sección anterior aparece inesperadamente en una nueva El encabezado o pie de página de la nueva sección sigue vinculado a la sección anterior. Llama HeaderFooterCollection.LinkToPrevious(false), o agrega contenido de encabezado/pie de página distinto a la nueva sección, para desvincularlo.

El encabezado/pie de página de la primera página o de la página par se ignora DifferentFirstPageHeaderFooter or OddAndEvenPagesHeaderFooter is false, o la coincidencia HeaderFooterType la variante no existe en Section.HeadersFooters. Establezca la bandera en PageSetup y añada la variante correspondiente de encabezado/pie de página.

El diseño de varias columnas no se aplica TextColumns.SetCount() se llamó con un recuento de uno, o en la sección incorrecta PageSetup. Llamar SetCount() con más de una columna en la sección de destino PageSetup.TextColumns.

Salto de sección insertado en la posición incorrecta del documento DocumentBuilder.InsertBreak(BreakType) inserta en el cursor actual del constructor. Use DocumentBuilder.MoveToSection() o los demás miembros de posicionamiento de cursor del constructor para posicionar el cursor antes de llamar InsertBreak().

Preguntas frecuentes

¿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 TopMargin, BottomMargin, LeftMargin, RightMargin, Orientation y PaperSize en el PageSetup de la nueva sección.

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

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

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

Llama a PageSetup.TextColumns.SetCount(2) en la sección, luego ajusta Spacing, EvenlySpaced o los valores individuales de TextColumn.Width según sea necesario.

¿Cómo accedo directamente a la primera y última sección?

Lee Document.FirstSection y Document.LastSection en lugar de indexar en Document.Sections.

Ver también

 Español