Trabalhando com parágrafos

Um parágrafo é um conjunto de caracteres combinados em um bloco lógico e terminando com um caractere especial – uma quebra de parágrafo. No Aspose.Words, um parágrafo é representado pela classe Paragraph.

Insira um parágrafo

Para inserir um novo parágrafo no documento, na verdade, você precisa inserir um caractere de quebra de parágrafo nele. DocumentBuilder.writeln também insere uma sequência de texto no documento, mas além disso adiciona uma quebra de parágrafo.

A formatação atual da fonte também é especificada pela propriedade font e a formatação atual do parágrafo é determinada pela propriedade paragraph_format.

O exemplo de código a seguir mostra como inserir um parágrafo em um 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")

Parágrafo de formato

A formatação atual do parágrafo é representada por um objeto ParagraphFormat retornado pela propriedade paragraph_format. Este objeto encapsula várias propriedades de formatação de parágrafo disponíveis em Microsoft Word. Você pode redefinir facilmente a formatação do parágrafo para o estilo Normal, alinhado à esquerda, sem recuo, sem espaçamento, sem bordas e sem sombreamento, chamando clear_formatting.

O exemplo de código a seguir mostra como definir a formatação de parágrafo:

# 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 um estilo de parágrafo

Alguns objetos de formatação, como Font ou ParagraphFormat, suportam estilos. Um único estilo interno ou definido pelo usuário é representado por um objeto Style que contém as propriedades de estilo correspondentes, como nome, estilo base, fonte e formatação de parágrafo do estilo e assim por diante.

Além disso, um objeto Style fornece a propriedade Style.style_identifier que retorna um identificador de estilo independente de localidade representado por um valor de enumeração StyleIdentifier. A questão é que os nomes dos estilos integrados no Microsoft Word são localizados para diferentes idiomas. Usando um identificador de estilo, você pode encontrar o estilo correto, independentemente do idioma do documento. Os valores de enumeração correspondem aos estilos integrados do Microsoft Word, como Normal, Heading 1, Heading 2 etc. Todos os estilos definidos pelo usuário recebem o valor StyleIdentifier.USER

O exemplo de código a seguir mostra como aplicar um estilo de parágrafo:

# 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")

Insira o separador de estilo para colocar diferentes estilos de parágrafo

Um separador de estilo pode ser adicionado ao final de um parágrafo usando o atalho de teclado Ctrl + Alt + Enter no MS Word. Este recurso permite dois estilos de parágrafo diferentes usados em um parágrafo impresso lógico. Se você deseja que algum texto do início de um determinado título apareça em um Índice, mas não deseja que o título inteiro esteja no Índice, você pode usar este recurso

O exemplo de código a seguir mostra como inserir um separador de estilo para acomodar diferentes estilos de parágrafo:

# 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 o separador de estilo de parágrafo

Aspose.Words fornece uma propriedade pública break_is_style_separator em uma classe Paragraph que permite identificar o Parágrafo Separador de Estilo conforme mostrado no exemplo abaixo:

# 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 bordas e sombreamento a um parágrafo

As fronteiras são representadas pelo BorderCollection. Esta é uma coleção de objetos Border que são acessados por índice ou por tipo de borda. O tipo de borda é representado pela enumeração BorderType. Alguns valores da enumeração são aplicáveis a vários ou apenas a um elemento do documento. Por exemplo, BorderType.BOTTOM é aplicável a um parágrafo ou célula de tabela, enquanto BorderType.DIAGONALDOWN especifica a borda diagonal apenas em uma célula de tabela.

Tanto a coleção de bordas quanto cada borda separada possuem atributos semelhantes, como cor, estilo de linha, largura da linha, distância do texto e sombra opcional. Eles são representados por propriedades com o mesmo nome. Você pode obter diferentes tipos de borda combinando os valores das propriedades. Além disso, os objetos BorderCollection e Border permitem redefinir esses valores para o padrão chamando o método Border.clear_formatting.

Aspose.Words também possui a classe Shading que contém atributos de sombreamento para elementos do documento. Você pode definir a textura de sombreamento desejada e as cores que serão aplicadas ao fundo e ao primeiro plano do elemento.

A textura de sombreamento é definida com um valor de enumeração TextureIndex que permite a aplicação de vários padrões ao objeto Shading. Por exemplo, para definir uma cor de fundo para um elemento do documento, utilize o valor TextureIndex.TEXTURE_SOLID e defina a cor de sombreamento do primeiro plano conforme apropriado. O exemplo abaixo mostra como aplicar bordas e sombreamento a um parágrafo.

O exemplo de código a seguir mostra como aplicar bordas e sombreamento a um parágrafo:

# 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")