Trabalhar com listas
Uma lista em um documento Microsoft Word é um conjunto de propriedades de formatação de lista. As listas podem ser usadas em seus documentos para formatar, organizar e enfatizar o texto. As listas são uma ótima maneira de organizar dados em documentos e facilitam a compreensão dos pontos-chave pelos leitores.
Cada lista pode ter até 9 níveis e as propriedades de formatação, como estilo numérico, valor inicial, recuo, posição da guia e outras são definidas separadamente para cada nível.
Este artigo descreve o trabalho programático com listas utilizando Aspose.Words.
Criando listas aplicando formatação de Lista
Aspose.Words permite a fácil criação de listas através da aplicação de formatação de listas. DocumentBuilder fornece a propriedade ListFormat que retorna um objeto ListFormat. Este objecto tem vários métodos para iniciar e terminar uma lista e para aumentar/diminuir o travessão. Existem dois tipos gerais de listas em Microsoft Word: com marcadores e numeradas:
- Para iniciar uma lista com marcadores, chame ListFormat.ApplyBulletDefault
- Para iniciar uma lista numerada, ligue para ListFormat.ApplyNumberDefault
O marcador ou o número e a formatação são adicionados ao parágrafo atual e todos os parágrafos adicionais criados usando DocumentBuilder até RemoveNumbers serem chamados para interromper a formatação da lista com marcadores.
Nos documentos do Word, as listas podem consistir em até nove níveis. A formatação da lista para cada nível especifica qual marcador ou número é usado, recuo à esquerda, espaço entre o marcador e o texto, etc. Os métodos a seguir alteram o nível da lista e aplicam as propriedades de formatação do novo nível:
- Para aumentar o nível de lista do parágrafo atual em um nível, chame ListFormat.ListIndent
- Para diminuir o nível de lista do parágrafo atual em um nível, chame ListFormat.ListOutdent
Os métodos alteram o nível da lista e aplicam as propriedades de formatação do novo nível.
O exemplo de código a seguir mostra como construir uma lista de vários níveis:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(DocumentBuilderSetMultilevelListFormatting.class); | |
// Open the document. | |
Document doc = new Document(); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.getListFormat().applyNumberDefault(); | |
builder.writeln("Item 1"); | |
builder.writeln("Item 2"); | |
builder.getListFormat().listIndent(); | |
builder.writeln("Item 2.1"); | |
builder.writeln("Item 2.2"); | |
builder.getListFormat().listIndent(); | |
builder.writeln("Item 2.1.1"); | |
builder.writeln("Item 2.2.2"); | |
builder.getListFormat().listOutdent(); | |
builder.writeln("Item 3"); | |
builder.getListFormat().removeNumbers(); | |
doc.save(dataDir + "output.doc"); |
Especificar a formatação de um nível de Lista
Os objetos de nível de lista são criados automaticamente quando uma lista é criada. Use as propriedades e métodos da classe ListLevel para controlar a formatação de níveis individuais de uma lista.
Reiniciar a lista para cada secção
Você pode reiniciar uma lista para cada seção Usando a propriedade IsRestartAtEachSection. Note que esta opção é suportada apenas nos formatos de Documento RTF, DOC e DOCX. Esta opção será gravada em DOCX apenas se OoxmlCompliance for superior a Ecma376.
O exemplo de código a seguir mostra como criar uma lista e reiniciá-la para cada seção:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
Document doc = new Document(); | |
doc.getLists().add(ListTemplate.NUMBER_DEFAULT); | |
com.aspose.words.List list = doc.getLists().get(0); | |
// Set true to specify that the list has to be restarted at each section. | |
list.isRestartAtEachSection(true); | |
DocumentBuilder builder = new DocumentBuilder(doc); | |
builder.getListFormat().setList(list); | |
for (int i = 1; i < 45; i++) { | |
builder.writeln(String.format("List Item " + i)); | |
// Insert section break. | |
if (i == 15) | |
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE); | |
} | |
builder.getListFormat().removeNumbers(); | |
// IsRestartAtEachSection will be written only if compliance is higher then OoxmlComplianceCore.Ecma376 | |
OoxmlSaveOptions options = new OoxmlSaveOptions(); | |
options.setCompliance(OoxmlCompliance.ISO_29500_2008_TRANSITIONAL); | |
dataDir = dataDir + "RestartAtEachSection_out.docx"; | |
// Save the document to disk. | |
doc.save(dataDir, options); |