Trabajar con párrafos

Un párrafo es un conjunto de caracteres combinados en un bloque lógico y que termina con un carácter especial: un salto de párrafo. En Aspose.Words, un párrafo está representado por la clase Paragraph.

Insertar un párrafo

Para insertar un nuevo párrafo en el documento, de hecho, debe insertar un carácter de salto de párrafo en él. DocumentBuilder.writeln también inserta una cadena de texto en el documento pero además agrega un salto de párrafo.

El formato de fuente actual también lo especifica la propiedad font y el formato de párrafo actual lo determina la propiedad paragraph_format.

El siguiente ejemplo de código muestra cómo insertar un párrafo en un documento:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
font = builder.font
font.size = 16
font.bold = True
font.color = drawing.Color.blue
font.name = "Arial"
font.underline = aw.Underline.DASH
paragraphFormat = builder.paragraph_format
paragraphFormat.first_line_indent = 8
paragraphFormat.alignment = aw.ParagraphAlignment.JUSTIFY
paragraphFormat.keep_together = True
builder.writeln("A whole paragraph.")
doc.save(docs_base.artifacts_dir + "AddContentUsingDocumentBuilder.insert_paragraph.docx")

Dar formato al párrafo

El formato de párrafo actual está representado por un objeto ParagraphFormat devuelto por la propiedad paragraph_format. Este objeto encapsula varias propiedades de formato de párrafo disponibles en Microsoft Word. Puede restablecer fácilmente el formato de párrafo predeterminado al estilo Normal, alineado a la izquierda, sin sangría, sin espaciado, sin bordes y sin sombreado llamando a clear_formatting.

El siguiente ejemplo de código muestra cómo configurar el formato de párrafo:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
paragraphFormat = builder.paragraph_format
paragraphFormat.alignment = aw.ParagraphAlignment.CENTER
paragraphFormat.left_indent = 50
paragraphFormat.right_indent = 50
paragraphFormat.space_after = 25
builder.writeln(
"I'm a very nice formatted paragraph. I'm intended to demonstrate how the left and right indents affect word wrapping.")
builder.writeln(
"I'm another nice formatted paragraph. I'm intended to demonstrate how the space after paragraph looks like.")
doc.save(docs_base.artifacts_dir + "DocumentFormatting.paragraph_formatting.docx")

Aplicar un estilo de párrafo

Algunos objetos de formato como Font o ParagraphFormat admiten estilos. Un único estilo integrado o definido por el usuario se representa mediante un objeto Style que contiene las propiedades de estilo correspondientes, como nombre, estilo base, fuente y formato de párrafo del estilo, etc.

Además, un objeto Style proporciona la propiedad Style.style_identifier que devuelve un identificador de estilo independiente de la configuración regional representado por un valor de enumeración StyleIdentifier. La cuestión es que los nombres de los estilos integrados en Microsoft Word están traducidos a diferentes idiomas. Con un identificador de estilo, puede encontrar el estilo correcto independientemente del idioma del documento. Los valores de enumeración corresponden a los estilos integrados de Microsoft Word, como Normal, Título 1, Título 2, etc. A todos los estilos definidos por el usuario se les asigna el valor StyleIdentifier.USER.

El siguiente ejemplo de código muestra cómo aplicar un estilo de párrafo:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.paragraph_format.style_identifier = aw.StyleIdentifier.TITLE
builder.write("Hello")
doc.save(docs_base.artifacts_dir + "DocumentFormatting.apply_paragraph_style.docx")

Insertar separador de estilos para colocar diferentes estilos de párrafo

Se puede agregar un separador de estilo al final de un párrafo usando el método abreviado de teclado Ctrl + Alt + Enter en MS Word. Esta característica permite utilizar dos estilos de párrafo diferentes en un párrafo impreso lógico. Si desea que algún texto del principio de un encabezado en particular aparezca en una tabla de contenido pero no desea que el encabezado completo aparezca en la tabla de contenido, puede usar esta función.

El siguiente ejemplo de código muestra cómo insertar un separador de estilo para dar cabida a diferentes estilos de párrafo:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
paraStyle = builder.document.styles.add(aw.StyleType.PARAGRAPH, "MyParaStyle")
paraStyle.font.bold = False
paraStyle.font.size = 8
paraStyle.font.name = "Arial"
# Append text with "Heading 1" style.
builder.paragraph_format.style_identifier = aw.StyleIdentifier.HEADING1
builder.write("Heading 1")
builder.insert_style_separator()
# Append text with another style.
builder.paragraph_format.style_name = paraStyle.name
builder.write("This is text with some other formatting ")
doc.save(docs_base.artifacts_dir + "WorkingWithStylesAndThemes.insert_style_separator.docx")

Identificar el separador de estilo de párrafo

Aspose.Words proporciona una propiedad pública break_is_style_separator en una clase Paragraph que permite identificar el párrafo separador de estilo como se muestra en el ejemplo que se muestra a continuación:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Document.docx")
for paragraph in doc.get_child_nodes(aw.NodeType.PARAGRAPH, True) :
paragraph = paragraph.as_paragraph()
if (paragraph.break_is_style_separator) :
print("Separator Found!")

Aplicar bordes y sombreado a un párrafo

Las fronteras están representadas por el BorderCollection. Esta es una colección de objetos Border a los que se accede por índice o por tipo de borde. El tipo de borde está representado por la enumeración BorderType. Algunos valores de la enumeración son aplicables a varios o sólo a un elemento del documento. Por ejemplo, BorderType.BOTTOM se aplica a un párrafo o celda de una tabla, mientras que BorderType.DIAGONALDOWN especifica el borde diagonal solo en una celda de la tabla.

Tanto la colección de bordes como cada borde por separado tienen atributos similares como color, estilo de línea, ancho de línea, distancia desde el texto y sombra opcional. Están representados por propiedades del mismo nombre. Puede lograr diferentes tipos de bordes combinando los valores de las propiedades. Además, tanto los objetos BorderCollection como Border le permiten restablecer estos valores a los valores predeterminados llamando al método Border.clear_formatting.

Aspose.Words también tiene la clase Shading que contiene atributos de sombreado para los elementos del documento. Puede configurar la textura de sombreado deseada y los colores que se aplican al fondo y al primer plano del elemento.

La textura de sombreado se establece con un valor de enumeración TextureIndex que permite la aplicación de varios patrones al objeto Shading. Por ejemplo, para establecer un color de fondo para un elemento de documento, utilice el valor TextureIndex.TEXTURE_SOLID y establezca el color de sombreado de primer plano según corresponda. El siguiente ejemplo muestra cómo aplicar bordes y sombreado a un párrafo.

El siguiente ejemplo de código muestra cómo aplicar bordes y sombreado a un párrafo:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
borders = builder.paragraph_format.borders
borders.distance_from_text = 20
borders.get_by_border_type(aw.BorderType.LEFT).line_style = aw.LineStyle.DOUBLE
borders.get_by_border_type(aw.BorderType.RIGHT).line_style = aw.LineStyle.DOUBLE
borders.get_by_border_type(aw.BorderType.TOP).line_style = aw.LineStyle.DOUBLE
borders.get_by_border_type(aw.BorderType.BOTTOM).line_style = aw.LineStyle.DOUBLE
shading = builder.paragraph_format.shading
shading.texture = aw.TextureIndex.TEXTURE_DIAGONAL_CROSS
shading.background_pattern_color = drawing.Color.light_coral
shading.foreground_pattern_color = drawing.Color.light_salmon
builder.write("I'm a formatted paragraph with double border and nice shading.")
doc.save(docs_base.artifacts_dir + "DocumentFormatting.apply_borders_and_shading_to_paragraph.doc")