Trabalhando com documento de texto

Neste artigo aprenderemos quais opções podem ser úteis para trabalhar com um documento de texto via Aspose.Words. Observe que esta não é uma lista completa das opções disponíveis, mas apenas um exemplo de como trabalhar com algumas delas.

Adicionar marcas bidirecionais

Você pode usar a propriedade add_bidi_marks para especificar se deseja adicionar marcas bidirecionais antes de cada execução BiDi ao exportar em formato de texto simples. Aspose.Words insere o caractere Unicode ‘MARCA DA DIREITA PARA A ESQUERDA’ (U+200F) antes de cada Run bidirecional no texto. Esta opção corresponde à opção “Adicionar marcas bidirecionais” na caixa de diálogo Conversão de arquivo do MS Word quando você exporta para um formato de texto simples. Observe que ele aparece na caixa de diálogo apenas se algum dos idiomas de edição árabe ou hebraico for adicionado ao MS Word.

O exemplo de código a seguir mostra como usar a propriedade add_bidi_marks. O valor padrão desta propriedade é False:

# 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.writeln("Hello world!")
builder.paragraph_format.bidi = True
builder.writeln("שלום עולם!")
builder.writeln("مرحبا بالعالم!")
saveOptions = aw.saving.TxtSaveOptions()
saveOptions.add_bidi_marks = True
doc.save(docs_base.artifacts_dir + "WorkingWithTxtSaveOptions.add_bidi_marks.txt", saveOptions)

Reconhecer itens da lista durante o carregamento do TXT

Aspose.Words pode importar itens de lista de um arquivo de texto como números de lista ou texto simples em seu modelo de objeto de documento. A propriedade detect_numbering_with_whitespaces permite especificar como os itens da lista numerada são reconhecidos quando um documento é importado do formato de texto simples:

  • Se esta opção estiver definida como True, os espaços em branco também serão usados como delimitadores de número de lista: o algoritmo de reconhecimento de lista para numeração em estilo árabe (1., 1.1.2.) usa espaços em branco e símbolos de ponto (".").
  • Se esta opção estiver definida como False, o algoritmo de reconhecimento de listas detecta parágrafos de lista, quando os números da lista terminam com ponto, colchete direito ou símbolos de marcador (como “•”, “*”, “-” ou “o”).

O exemplo de código a seguir mostra como usar essa propriedade:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
# Create a plaintext document in the form of a string with parts that may be interpreted as lists.
# Upon loading, the first three lists will always be detected by Aspose.words,
# and List objects will be created for them after loading.
textDoc = """Full stop delimiters:\n
1. First list item 1\n
2. First list item 2\n
3. First list item 3\n\n
Right bracket delimiters:\n
1) Second list item 1\n
2) Second list item 2\n
3) Second list item 3\n\n
Bullet delimiters:\n
• Third list item 1\n
• Third list item 2\n
• Third list item 3\n\n
Whitespace delimiters:\n
1 Fourth list item 1\n
2 Fourth list item 2\n
3 Fourth list item 3"""
# The fourth list, with whitespace inbetween the list number and list item contents,
# will only be detected as a list if "DetectNumberingWithWhitespaces" in a LoadOptions object is set to true,
# to avoid paragraphs that start with numbers being mistakenly detected as lists.
loadOptions = aw.loading.TxtLoadOptions()
loadOptions.detect_numbering_with_whitespaces = True
# Load the document while applying LoadOptions as a parameter and verify the result.
doc = aw.Document(io.BytesIO(textDoc.encode("utf-8")), loadOptions)
doc.save(docs_base.artifacts_dir + "WorkingWithTxtLoadOptions.detect_numbering_with_whitespaces.docx")

Lidar com espaços iniciais e finais durante o carregamento TXT

Você pode controlar a forma de lidar com espaços iniciais e finais durante o carregamento do arquivo TXT. Os espaços iniciais podem ser aparados, preservados ou convertidos em recuo e os espaços finais podem ser aparados ou preservados.

O exemplo de código a seguir mostra como cortar espaços iniciais e finais ao importar um arquivo TXT:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
textDoc = " Line 1 \n" + " Line 2 \n" + " Line 3 "
loadOptions = aw.loading.TxtLoadOptions()
loadOptions.leading_spaces_options = aw.loading.TxtLeadingSpacesOptions.TRIM
loadOptions.trailing_spaces_options = aw.loading.TxtTrailingSpacesOptions.TRIM
f = io.BytesIO(textDoc.encode("utf-8"))
doc = aw.Document(f, loadOptions)
doc.save(docs_base.artifacts_dir + "WorkingWithTxtLoadOptions.handle_spaces_options.docx")

Detectar a direção do texto do documento

Aspose.Words fornece propriedade document_direction na classe TxtLoadOptions para detectar a direção do texto (RTL/LTR) no documento. Esta propriedade define ou obtém instruções de texto do documento fornecidas na enumeração DocumentDirection. O valor padrão é da esquerda para a direita.

O exemplo de código a seguir mostra como detectar a direção do texto do documento ao importar o arquivo TXT:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
loadOptions = aw.loading.TxtLoadOptions()
loadOptions.document_direction = aw.loading.DocumentDirection.AUTO
doc = aw.Document(docs_base.my_dir + "Hebrew text.txt", loadOptions)
paragraph = doc.first_section.body.first_paragraph
print(paragraph.paragraph_format.bidi)
doc.save(docs_base.artifacts_dir + "WorkingWithTxtLoadOptions.document_text_direction.docx")

Exportar cabeçalho e rodapé na saída TXT

Se você deseja exportar cabeçalho e rodapé no documento TXT de saída, você pode usar a propriedade export_headers_footers_mode. Esta propriedade especifica a forma como os cabeçalhos e rodapés são exportados para o formato de texto simples.

O exemplo de código a seguir mostra como exportar cabeçalhos e rodapés para formato de texto simples:

doc = aw.Document(docs_base.my_dir + "Document.docx")

options = aw.saving.TxtSaveOptions()
options.save_format = aw.SaveFormat.TEXT

# All headers and footers are placed at the very end of the output document.
options.export_headers_footers_mode = aw.saving.TxtExportHeadersFootersMode.ALL_AT_END
doc.save(docs_base.artifacts_dir + "WorkingWithTxtSaveOptions.export_headers_footers_mode_A.txt", options)

# Only primary headers and footers are exported at the beginning and end of each section.
options.export_headers_footers_mode = aw.saving.TxtExportHeadersFootersMode.PRIMARY_ONLY
doc.save(docs_base.artifacts_dir + "WorkingWithTxtSaveOptions.export_headers_footers_mode_B.txt", options)

# No headers and footers are exported.
options.export_headers_footers_mode = aw.saving.TxtExportHeadersFootersMode.NONE
doc.save(docs_base.artifacts_dir + "WorkingWithTxtSaveOptions.export_headers_footers_mode_C.txt", options)

Exportar recuo da lista na saída TXT

Aspose.Words introduziu a classe TxtListIndentation que permite especificar como os níveis da lista são recuados durante a exportação para um formato de texto simples. Ao trabalhar com TxtSaveOption, a propriedade list_indentation é fornecida para especificar o caractere a ser usado para recuar níveis de lista e contar especificando quantos caracteres usar como recuo por nível de lista. O valor padrão para propriedade de caractere é ‘\0’ indicando que não há recuo. Para a propriedade count, o valor padrão é 0, o que significa que não há recuo.

Usando caractere de tabulação

O exemplo de código a seguir mostra como exportar níveis de lista usando caracteres de tabulação:

# 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)
# Create a list with three levels of indentation.
builder.list_format.apply_number_default()
builder.writeln("Item 1")
builder.list_format.list_indent()
builder.writeln("Item 2")
builder.list_format.list_indent()
builder.write("Item 3")
saveOptions = aw.saving.TxtSaveOptions()
saveOptions.list_indentation.count = 1
#saveOptions.list_indentation.character = '\t'
doc.save(docs_base.artifacts_dir + "WorkingWithTxtSaveOptions.use_tab_character_per_level_for_list_indentation.txt", saveOptions)

Usando caractere espacial

O exemplo de código a seguir mostra como exportar níveis de lista usando caracteres de espaço:

# 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)
# Create a list with three levels of indentation.
builder.list_format.apply_number_default()
builder.writeln("Item 1")
builder.list_format.list_indent()
builder.writeln("Item 2")
builder.list_format.list_indent()
builder.write("Item 3")
saveOptions = aw.saving.TxtSaveOptions()
saveOptions.list_indentation.count = 3
#saveOptions.list_indentation.character = ' '
doc.save(docs_base.artifacts_dir + "WorkingWithTxtSaveOptions.use_space_character_per_level_for_list_indentation.txt", saveOptions)