Uso `DocumentBuilder` Modificar un documento

Formato de especificación

Formato de fuente

Formato de fuente actual está representado por un Font objeto devuelto por el DocumentBuilder.Font propiedad. El Font clase contiene una amplia variedad de propiedades de fuentes posibles en Microsoft Word.

font-formatting-aspose-words-java
El siguiente ejemplo de código muestra cómo configurar el formato de fuente.

Cell Formatting

El formato celular se utiliza durante la construcción de una tabla. Está representado por un CellFormat objeto devuelto por el DocumentBuilder.CellFormat propiedad. CellFormat encapsula varias propiedades de células de mesa como ancho o alineación vertical.

cell-formatting-aspose-words-java
El siguiente ejemplo de código muestra cómo crear una tabla que contenga una sola célula formateada.

Row Formatting

Formato de fila actual es determinado por un RowFormat objeto que es devuelto por el DocumentBuilder.RowFormat propiedad. El objeto encapsula información sobre todo el formato de fila de mesa.

row-formatting-aspose-words-java
El serlow code ejemplo muestra cómo crear una tabla que contiene una sola célula y aplicar formato de fila.

Formato de lista

Aspose.Words permite la fácil creación de listas aplicando formato de lista. DocumentBuilder proporciona el DocumentBuilder.ListFormat propiedad que devuelve un ListFormat objeto. Este objeto tiene varios métodos para iniciar y terminar una lista y aumentar/disminuir el indent.

list-fformatting-aspose-words-java
Hay dos tipos generales de listas en Microsoft Word: balada y numerada.

La bala o el número y el formato se añaden al párrafo actual y todos los párrafos adicionales creados utilizando DocumentBuilder hasta ListFormat.removeNumbers se llama para detener el formato de lista de balas.

En documentos de Word, las listas pueden consistir en hasta nueve niveles. El formato de lista para cada nivel especifica qué bala o número se utiliza, indent izquierdo, espacio entre la bala y el texto, etc.

Los métodos cambian el nivel de lista y aplican las propiedades de formato del nuevo nivel.

El siguiente ejemplo de código muestra cómo construir una lista multinivel.

Configuración de página y formato de sección

Configuración de página y propiedades de sección se encapsulan en el PageSetup objeto que es devuelto por el DocumentBuilder.PageSetup propiedad. El objeto contiene todos los atributos de configuración de página de una sección (míngeno izquierdo, margen inferior, tamaño de papel, etc.) como propiedades.

section-formatting-aspose-words-java
El siguiente ejemplo de código muestra cómo establecer tales propiedades como tamaño de página y orientación para la sección actual.

Aplicar un estilo

Algunos objetos de formato como los estilos de soporte Font o ParagraphFormat. Un solo estilo integrado o definido por el usuario está representado por un Style objeto que contiene las propiedades de estilo correspondiente como nombre, estilo base, fuente y formato párrafo del estilo, y así sucesivamente.

Además, a Style objeto proporciona el Style.getStyleIdentifier propiedad que devuelve un identificador de estilo locale-independiente representado por un Style.StyleIdentifier Valor de enumeración. El punto es que los nombres de estilos incorporados en Microsoft Word se localizan para diferentes idiomas. Utilizando un identificador de estilo, puede encontrar el estilo correcto independientemente del idioma de documento. Los valores de enumeración corresponden a los Microsoft Word estilos incorporados como Normal , Cabeza 1 , Cabeza 2 etc. Todos los estilos definidos por el usuario son asignados StyleIdentifier. Valor de usuario.

apply-style-aspose-words-java
El siguiente ejemplo de código muestra cómo aplicar un estilo de párrafo.

Borders and Shading

Las fronteras están representadas por la Coleccion Fronteriza. Se trata de una colección de objetos fronterizos a los que se accede por índice o por tipo de frontera. Tipo de frontera está representado por BorderType enumeración. Algunos valores de la enumeración son aplicables a varios o sólo un elemento de documento. Por ejemplo, BorderType.Bottom es aplicable a un párrafo o celda de mesa mientras BorderType.DiagonalDown especifica la frontera diagonal en una celda de mesa solamente.

Tanto la colección fronteriza como cada frontera separada tienen atributos similares como color, estilo de línea, ancho de línea, distancia del texto, y sombra opcional. Están representados por propiedades del mismo nombre. Puede lograr diferentes tipos de frontera combinando valores de propiedad. Además, ambos BorderCollection y Border objetos le permiten restablecer estos valores por defecto llamando al Border.clearFormatting método. Tenga en cuenta que cuando las propiedades fronterizas se reasientan a valores predeterminados, la frontera es invisible.

set-borders-shading-aspose-words-java
El Shading class contains shading atributos for document elements. Puede configurar la textura de afeitado deseada y los colores que se aplican al fondo y primer plano del elemento.

La textura de la sombra se establece con un TextureIndex valor de enumeración que permite la aplicación de diversos patrones al Shading objeto. Por ejemplo, para establecer un color de fondo para un elemento de documento, utilice el TextureIndex.TextureSolid valor y establecer el color de la sombra del primer plano según corresponda.

borders-and-shading-aspose-words-java
El siguiente ejemplo muestra cómo aplicar las fronteras y afeitarse con un párrafo.

Apriete a la plancha

Aspose.Words proporciona dos propiedades ParagraphFormat.SnapToGrid y Font.SnapToGrid para conseguir y establecer la propiedad del párrafo rápido a la red

Moving the Cursor

Detección de la posición actual del cursor

Usted puede obtener donde el cursor del constructor está actualmente posicionado en cualquier momento. El DocumentBuilder.getCurrentNode propiedad devuelve el nodo que está actualmente seleccionado en este constructor. El nodo es un niño directo de un párrafo. Cualquier operación de inserción que realice utilizando DocumentBuilder insertará antes DocumentBuilder.CurrentNode. Cuando el párrafo actual está vacío o el cursor se coloca justo antes del final del párrafo, DocumentBuilder.CurrentNode vuelve nulo.

Además, puede utilizar el DocumentBuilder.getCurrentParagraph propiedad, que obtiene el párrafo que se selecciona actualmente en este DocumentBuilder. El serlow code ejemplo muestra cómo acceder al nodo actual en un constructor de documentos.

Moviéndose a cualquier nodo (paragraphs y sus hijos)

Si tiene un nodo de objeto de documento, que es un párrafo o un niño directo de un párrafo, puede señalar el cursor del constructor a este nodo. Usar el DocumentBuilder.moveTo método para realizar esto. El siguiente ejemplo de código muestra cómo mover una posición del cursor a un nodo especificado.

Moving to the Document Start/End

Si necesita pasar al comienzo del documento, llame DocumentBuilder.moveToDocumentStart. Si necesita pasar al final del documento, llame DocumentBuilder.moveToDocumentEnd.

Mover a una sección

Si usted está trabajando con un documento que contiene múltiples secciones, puede moverse a una sección deseada utilizando DocumentBuilder.moveToSection. Este método mueve el cursor al comienzo de una sección especificada y acepta el índice de la sección requerida. Cuando el índice de sección es mayor o igual a 0, especifica un índice desde el comienzo del documento con 0 siendo la primera sección. Cuando el índice de sección es inferior a 0, especifica un índice desde el final del documento con -1 siendo la última sección. El serlow code ejemplo muestra cómo mover una posición del cursor a la sección especificada. Puede descargar el archivo de plantilla de este ejemplo desde Aquí.

Mover a un Header/Footer

Cuando usted necesita colocar algunos datos en una cabecera o un pie de página, debe moverse allí primero utilizando DocumentBuilder.moveToHeaderFooter. El método acepta un valor de enumeración HeaderFooterType que identifica el tipo de cabecera o calzado a donde debe mover el cursor.

Si quieres crear encabezados y calzados que son diferentes para la primera página, tienes que establecer el PageSetup.getDifferentFirstPageHeaderFooter propiedad a true. Si quieres crear encabezados y calzados que son diferentes para páginas incluso y extrañas, necesitas establecer PageSetup.getOddAndEvenPagesHeaderFooter a true.

Si necesitas volver a la historia principal, usaDocumentBuilder.moveToSection para salir de la cabecera o del pie. A continuación, el ejemplo crea cabeceras y calzados en un documento usando DocumentBuilder.

Moving to a Paragraph

UsoDocumentBuilder.moveToParagraph mover el cursor a un párrafo deseado en la sección actual. Usted debe pasar dos parámetros a este método: párrafoIndex (el índice del párrafo a seguir) y carácterIndex (el índice del carácter dentro del párrafo).

La navegación se realiza dentro de la historia actual de la sección actual. Es decir, si usted movió el cursor al encabezado primario de la primera sección, entonces el párrafoIndex especifica el índice del párrafo dentro de ese encabezado de esa sección.

Cuando el párrafoIndex es mayor o igual a 0, especifica un índice desde el principio de la sección con 0 siendo el primer párrafo. Cuando el párrafoIndex es inferior a 0, especifica un índice desde el final de la sección con -1 siendo el último párrafo. El índice de caracteres sólo se puede especificar como 0 para pasar al comienzo del párrafo o -1 para pasar al final del párrafo. El siguiente ejemplo de código muestra cómo mover una posición del cursor al párrafo especificado. Puede descargar el archivo de plantilla de este ejemplo desde Aquí.

Mover a una célula de mesa

Uso DocumentBuilder.moveToCell si necesita mover el cursor a una celda de mesa en la sección actual. Este método acepta cuatro parámetros:

  • tablaIndex - el índice de la tabla a seguir.
  • rowIndex - el índice de la fila en la mesa.
  • columnaIndex - el índice de la columna en la tabla.
  • carácterIndex - el índice del personaje dentro de la celda.

La navegación se realiza dentro de la historia actual de la sección actual.

Para los parámetros índice, cuando el índice es mayor o igual a 0, especifica un índice desde el principio con 0 siendo el primer elemento. Cuando el índice es inferior a 0, especifica un índice desde el extremo con -1 siendo el último elemento.

Además, tenga en cuenta que el personajeIndex actualmente sólo puede especificar 0 para pasar al comienzo de la celda o -1 para moverse al final de la célula. El siguiente ejemplo de código muestra cómo mover una posición del cursor a la celda de tabla especificada. Puede descargar el archivo de plantilla de este ejemplo desde Aquí.

Mover a un marcador

Los marcadores se utilizan frecuentemente para marcar lugares particulares en el documento donde se deben insertar nuevos elementos. Para pasar a un marcador, utilice DocumentBuilder.moveToBookmark. Este método tiene dos sobrecargas. El más simple no acepta nada más que el nombre del marcador donde se mueve el cursor. El siguiente ejemplo de código muestra cómo mover una posición del cursor a un marcador.

Esta sobrecarga mueve el cursor a una posición justo después del inicio del marcador con el nombre especificado. Otra sobrecarga DocumentBuilder.moveToBookmark mueve el cursor a un marcador con mayor precisión. Acepta dos parámetros booleanos adicionales:

  • isStart determina si mover el cursor al principio o al final del marcador.
  • isDespués determina si mover el cursor para ser después de la posición de inicio o final del marcador, o para mover el cursor para ser antes de la posición de inicio o final del marcador.

El siguiente ejemplo de código muestra cómo mover una posición del cursor hasta justo después del extremo de marcador.

La inserción del nuevo texto de esta manera no sustituye el texto existente del marcador. Tenga en cuenta que algunos marcadores en el documento se asignan a campos de forma. Moviéndose a tal marcador e insertando texto, inserta el texto en el código de campo de formularios. Aunque esto no invalidará el campo de forma, el texto insertado no será visible porque se convierte en parte del código de campo.

Mover a un Merge Campo

A veces es posible que necesite realizar un “manual” mail merge utilizando DocumentBuilder o llenar un campo de fusión de una manera especial dentro de un mail merge Manejador del evento. Eso es cuando DocumentBuilder.moveToMergeField podría ser útil. El método acepta el nombre del campo de fusión. Se mueve el cursor a una posición justo más allá del campo de fusión especificado y elimina el campo de fusión. El siguiente ejemplo de código muestra cómo mover el cursor a una posición justo más allá del campo de fusión especificado.

Cómo convertir entre unidades de medición

La mayoría de las propiedades del objeto proporcionadas en Aspose.Words API que representa algunas mediciones (ancho/altura, márgenes y diversas distancias) aceptan valores en puntos (1 pulgada equivale a 72 puntos). A veces esto no es conveniente así que hay ConvertUtil clase que proporciona funciones de ayuda para convertir entre varias unidades de medición. Permite convertir pulgadas a puntos, puntos a pulgadas, píxeles a puntos y puntos a píxeles. Cuando los píxeles se convierten en puntos y viceversa, se puede realizar en 96 dpi (puntos por pulgada) resoluciones o en la resolución dpi especificada.

ConvertUtil es muy útil cuando se establecen diferentes propiedades de página porque, por ejemplo, las pulgadas son unidades de medición más habituales que los puntos. El siguiente ejemplo muestra cómo configurar las propiedades de la página en pulgadas.

El siguiente ejemplo de código muestra cómo especificar las propiedades de la página en pulgadas.