Trabalhar com estilos
A classe StyleCollection é usada para gerenciar configurações internas e aplicar configurações definidas pelo usuário a estilos.
Como extrair conteúdo com base em estilos
Em um nível simples, recuperar o conteúdo com base em estilos de um documento do Word pode ser útil para identificar, listar e contar parágrafos e execuções de texto formatados com um estilo específico. Por exemplo, pode ser necessário identificar tipos específicos de conteúdo no documento, como exemplos, títulos, referências, palavras-chave, nomes de figuras e estudos de caso.
Para levar isso alguns passos adiante, isso também pode ser usado para alavancar a estrutura do documento, definida pelos estilos que ele usa, para reutilizar o documento para outra saída, como HTML. Na verdade, é assim que a documentação Aspose é construída, colocando Aspose.Words à prova. Uma ferramenta criada usando Aspose.Words pega os documentos do Word de origem e os divide em tópicos em determinados níveis de cabeçalho. Um arquivo XML é produzido usando Aspose.Words que é usado para construir a árvore de navegação que você pode ver à esquerda. E então Aspose.Words converte cada tópico em HTML.
A solução para recuperar texto formatado com estilos específicos em um documento do Word é normalmente econômica e direta usando Aspose.Words.
A Solução
Para ilustrar a facilidade com que Aspose.Words lida com a recuperação de conteúdo com base em estilos, vejamos um exemplo. Neste exemplo, vamos recuperar texto formatado com um estilo de parágrafo específico e um estilo de caractere de um documento do Word de amostra. A um nível elevado, isso envolverá:
- Abrindo um documento do Word usando a classe
Document
. - Obtendo coleções de todos os parágrafos e todas as execuções no documento.
- Seleccionar apenas os parágrafos e execuções necessários. Especificamente, recuperaremos o texto formatado com o estilo de parágrafo' Título 1 ‘e o estilo de caractere’ ênfase intensa ' deste exemplo de Documento do Word.
Neste documento de exemplo, o texto formatado com o estilo de parágrafo ‘Título 1’ é ‘inserir guia’, ‘Estilos Rápidos’ e ‘tema’, e o texto formatado com o estilo de caractere ‘ênfase intensa’ são as várias instâncias de texto azul, em itálico e em negrito, como ‘galerias’ e ‘aparência geral’.
O Código
A implementação de uma consulta baseada em estilo é bastante simples no modelo de objeto de Documento Aspose.Words, pois simplesmente usa ferramentas que já estão em vigor. Dois métodos de classe são implementados para esta solução: ParagraphsByStyleName - este método recupera uma matriz dos parágrafos no documento que têm um nome de estilo específico. RunsByStyleName - este método recupera uma matriz dessas execuções no documento que têm um nome de estilo específico. Ambos os métodos são muito semelhantes, sendo as únicas diferenças os tipos de nós e a representação das informações de estilo nos nós de parágrafo e de execução. Aqui está uma implementação de ParagraphsByStyleName. Abaixo exemplo encontrar todos os parágrafos formatados com o estilo especificado.
Esta implementação também usa o método Document.GetChildNodes
da classe Document
, que retorna uma coleção de todos os nós com o tipo especificado, que neste caso em todos os parágrafos.
Observe que o segundo parâmetro do método Document.GetChildNodes é definido como true. Isso força o método Document.GetChildNodes a selecionar recursivamente de todos os nós filhos, em vez de selecionar apenas os filhos imediatos.
Também vale a pena salientar que a coleção de parágrafos não cria uma sobrecarga imediata porque os parágrafos são carregados nesta coleção apenas quando você acessa itens neles. Então, tudo o que você precisa fazer é percorrer a coleção, usando o padrão para cada operador e adicionar parágrafos que tenham o estilo especificado à matriz paragraphsWithStyle. O nome do estilo Paragraph
pode ser encontrado no estilo. Propriedade Name do objecto Paragraph.ParagraphFormat
. A implementação de RunsByStyleName é quase a mesma, embora obviamente estejamos usando NodeType.Run
para recuperar nós executados. A propriedade Font.Style
de um objeto Run
é usada para acessar informações de estilo nos nós Run. O exemplo below code encontra todas as execuções formatadas com o estilo especificado.
Quando ambas as consultas são implementadas, tudo o que você precisa fazer é passar um objeto document e especificar os nomes de estilo do conteúdo que deseja recuperar: abaixo exemplo executar consultas e exibir resultados. Você pode baixar o arquivo de modelo deste exemplo aqui.
Resultado Final
Quando tudo estiver pronto, a execução da amostra exibirá a seguinte saída:
Como você pode ver, este é um exemplo muito simples, mostrando o número e o texto dos parágrafos coletados e é executado no documento do Word de amostra.
Como Inserir e trabalhar com o campo Índice
Muitas vezes, você trabalhará com documentos contendo um índice (TOC). Usando Aspose.Words você pode inserir seu próprio índice ou reconstruir completamente o índice existente no documento usando apenas algumas linhas de código. Este artigo descreve como trabalhar com o campo índice e demonstra:
- Como inserir um novo
TOC
- Actualizar TOCs novo ou existente no documento.
- Especifique as opções para controlar a formatação e a estrutura geral do TOC.
- Como modificar os estilos e a aparência do Índice.
- Como remover um campo
TOC
inteiro juntamente com todas as entradas do documento.
Inserir TC Campos
Muitas vezes, uma linha de texto específica é designada para o TOC
e é marcada com um campo TC
. A maneira mais fácil de fazer isso em MS Word é destacar o texto e pressionar ALT+SHIFT+O. Isso cria automaticamente um campo TC
usando o texto selecionado. A mesma técnica pode ser realizada através do Código. O código abaixo irá encontrar o texto correspondente à entrada e inserir um campo TC
na mesma posição que o texto. O código baseia-se na mesma técnica utilizada no artigo. O exemplo abaixo mostra como localizar e inserir um campo TC
no texto de um documento.
Modificar um índice
Alterar a formatação dos estilos
A formatação das entradas no TOC
não usa os estilos originais das entradas marcadas, em vez disso, cada nível é formatado usando um estilo TOC
equivalente. Por exemplo, o primeiro nível no TOC
é formatado com o estilo TOC1, o segundo nível formatado com o estilo TOC2 e assim por diante. Isso significa que, para alterar a aparência do TOC
, esses estilos devem ser modificados. Em Aspose.Words, esses estilos são representados pelo locale independent StyleIdentifier.TOC1
até StyleIdentifier.TOC9
e podem ser recuperados da coleção Document.Styles
usando esses identificadores. Uma vez recuperado o estilo apropriado do documento, a formatação deste estilo pode ser modificada. Quaisquer alterações a estes estilos serão automaticamente refletidas no TOCs do documento. O exemplo below code altera uma propriedade de formatação usada no estilo de primeiro nível TOC
.
Também é útil notar que qualquer formatação direta de um parágrafo (definido no próprio parágrafo e não no estilo) marcado para ser incluído o TOC
será copiado na entrada no TOC. Por exemplo, se o estilo Título 1 for usado para marcar o conteúdo para o TOC
e este estilo tiver formatação em negrito, enquanto o parágrafo também tiver formatação em itálico aplicada diretamente a ele. A entrada TOC
resultante não será em negrito, pois faz parte da formatação de estilo, mas será em itálico, pois está formatada diretamente no parágrafo. Também pode controlar a formatação dos separadores utilizados entre cada entrada e o número da página. Por padrão, trata-se de uma linha pontilhada que é espalhada até a numeração da página usando um caractere de tabulação e uma parada de tabulação direita alinhada perto da margem direita.
Usando a classe Style
recuperada para o nível TOC
específico que você deseja modificar, Você também pode modificar como elas aparecem no documento. Para alterar a forma como isso aparece, em primeiro lugar, Style.ParagraphFormat
deve ser chamado para recuperar a formatação do parágrafo para o estilo. A partir disso, as paradas de tabulação podem ser recuperadas chamando ParagraphFormat.TabStops
e a parada de tabulação apropriada modificada. Usando esta mesma técnica, a guia em si pode ser movida ou removida completamente. O exemplo below code mostra como modificar a posição do tab stop direito em TOC
parágrafos relacionados. Você pode baixar o arquivo de modelo deste exemplo aqui.
Remover um índice do documento
Um índice pode ser removido do documento removendo todos os nós encontrados entre os nós FieldStart
e FieldEnd do campo TOC
. O código abaixo demonstra isso. A remoção do campo TOC
é mais simples do que um campo normal, pois não acompanhamos os campos aninhados. Em vez disso, verificamos que o nó FieldEnd
é do tipo FieldType.FieldTOC
, o que significa que encontramos o fim do TOC atual. Esta técnica pode ser usada neste caso sem se preocupar com quaisquer campos aninhados, pois podemos assumir que qualquer documento devidamente formado não terá um campo TOC
Totalmente aninhado dentro de outro campo TOC
. Em primeiro lugar, os nós FieldStart
de cada TOC
são recolhidos e armazenados. O TOC
especificado é então enumerado para que todos os nós dentro do campo sejam visitados e armazenados. Os nós são então removidos do documento. O exemplo below code demonstra como remover um TOC
especificado de um documento. Você pode baixar o arquivo de modelo deste exemplo aqui.
Inserir Separador de estilo para colocar diferentes estilos de parágrafo
O separador de estilos pode ser adicionado ao final de um parágrafo utilizando o atalho de teclado Ctrl + Alt + Enter na palavra MS. Este recurso permite dois estilos de parágrafo diferentes usados em um parágrafo impresso lógico. Se pretender que algum texto do início de um título específico apareça num Sumário, mas não pretender que o título inteiro no sumário, pode utilizar esta funcionalidade. O exemplo below code mostra como inserir um separador de estilo para colocar diferentes estilos de parágrafo.
Copiar todos os estilos do modelo
Há casos em que você deseja copiar todos os estilos de um documento para outro. Você pode usar o método Document.CopyStylesFromTemplate
para copiar estilos do modelo especificado para um documento. Quando os estilos são copiados de um modelo para um documento, os estilos com nomes semelhantes no documento são redefinidos para corresponder às descrições de estilo no modelo. Os estilos únicos do modelo são copiados para o documento. Os estilos únicos no documento permanecem intactos. O exemplo below code mostra como copiar estilos de um documento para outro.