Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Ao trabalhar com documentos, é importante poder extrair facilmente o conteúdo de um intervalo específico de um documento. No entanto, o conteúdo pode consistir em elementos complexos, como parágrafos, tabelas, imagens, etc.
Independentemente do conteúdo que precisa ser extraído, o método para extrair esse conteúdo sempre será determinado pelos nós selecionados para extrair o conteúdo. Podem ser corpos de texto inteiros ou trechos de texto simples.
Existem muitas situações possíveis e, portanto, muitos tipos de nós diferentes a serem considerados ao extrair conteúdo. Por exemplo, você pode querer extrair conteúdo entre:
Em algumas situações, pode até ser necessário combinar diferentes tipos de nós, como extrair conteúdo entre um parágrafo e um campo ou entre uma execução e um marcador.
Este artigo fornece a implementação de código para extrair texto entre diferentes nós, bem como exemplos de cenários comuns.
Muitas vezes, o objetivo da extração do conteúdo é duplicá-lo ou salvá-lo separadamente em um novo documento. Por exemplo, você pode extrair conteúdo e:
Isso pode ser facilmente alcançado usando Aspose.Words e a implementação do código abaixo.
O código nesta seção aborda todas as situações possíveis descritas acima com um método generalizado e reutilizável. O esboço geral desta técnica envolve:
Para extrair o conteúdo do seu documento você precisa chamar o método extrair_conteúdo abaixo e passar os parâmetros apropriados. A base subjacente deste método envolve encontrar nós em nível de bloco (parágrafos e tabelas) e cloná-los para criar cópias idênticas. Se os nós marcadores passados forem no nível do bloco, o método será capaz de simplesmente copiar o conteúdo nesse nível e adicioná-lo ao array.
No entanto, se os nós marcadores estiverem embutidos (filhos de um parágrafo), a situação se torna mais complexa, pois é necessário dividir o parágrafo no nó embutido, seja uma execução, campos de marcadores, etc. presente entre os marcadores é removido. Este processo é usado para garantir que os nós embutidos ainda manterão a formatação do parágrafo pai. O método também executará verificações nos nós passados como parâmetros e lançará uma exceção se algum dos nós for inválido. Os parâmetros a serem passados para este método são:
A implementação do método extrair_conteúdo você pode encontrar em aqui. Este método será mencionado nos cenários deste artigo.
Também definiremos um método personalizado para gerar facilmente um documento a partir de nós extraídos. Este método é usado em muitos dos cenários abaixo e simplesmente cria um novo documento e importa o conteúdo extraído para ele.
O exemplo de código a seguir mostra como pegar uma lista de nós e inseri-los em um novo documento:
Isso demonstra como usar o método acima para extrair conteúdo entre parágrafos específicos. Neste caso, queremos extrair o corpo da carta que se encontra na primeira metade do documento. Podemos dizer que isso está entre o 7º e o 11º parágrafo.
O código abaixo realiza esta tarefa. Os parágrafos apropriados são extraídos usando o método CompositeNode.get_child no documento e passando os índices especificados. Em seguida, passamos esses nós para o método extrair_conteúdo e declaramos que eles serão incluídos na extração. Este método retornará o conteúdo copiado entre esses nós que serão então inseridos em um novo documento.
O exemplo de código a seguir mostra como extrair o conteúdo entre parágrafos específicos usando o método extrair_conteúdo acima:
Podemos extrair conteúdo entre quaisquer combinações de nível de bloco ou nós embutidos. Neste cenário abaixo iremos extrair o conteúdo entre o primeiro parágrafo e a tabela da segunda seção inclusive. Obtemos os nós marcadores chamando os métodos Body.first_paragraph e CompositeNode.get_child na segunda seção do documento para recuperar os nós Paragraph e Table apropriados. Para uma pequena variação, vamos duplicar o conteúdo e inseri-lo abaixo do original.
O exemplo de código a seguir mostra como extrair o conteúdo entre um parágrafo e uma tabela usando o método extrair_conteúdo:
Talvez seja necessário extrair o conteúdo entre parágrafos do mesmo estilo ou de estilo diferente, como entre parágrafos marcados com estilos de título.
O código abaixo mostra como conseguir isso. É um exemplo simples que irá extrair o conteúdo entre a primeira instância dos estilos “Título 1” e “Cabeçalho 3” sem extrair também os títulos. Para fazer isso, definimos o último parâmetro como false, que especifica que os nós marcadores não devem ser incluídos.
Em uma implementação adequada, isso deve ser executado em loop para extrair o conteúdo entre todos os parágrafos desses estilos do documento. O conteúdo extraído é copiado para um novo documento.
O exemplo de código a seguir mostra como extrair conteúdo entre parágrafos com estilos específicos usando o método extrair_conteúdo:
Você também pode extrair conteúdo entre nós embutidos, como Run. As execuções de diferentes parágrafos podem ser passadas como marcadores. O código abaixo mostra como extrair texto específico entre o mesmo nó Paragraph.
O exemplo de código a seguir mostra como extrair conteúdo entre execuções específicas do mesmo parágrafo usando o método extrair_conteúdo:
Para utilizar um campo como marcador, deve-se passar o nó FieldStart. O último parâmetro do método extrair_conteúdo definirá se todo o campo será incluído ou não. Vamos extrair o conteúdo entre o campo de mesclagem “FullName” e um parágrafo do documento. Usamos o método DocumentBuilder.move_to_merge_field da classe DocumentBuilder. Isso retornará o nó FieldStart do nome do campo de mesclagem passado para ele.
No nosso caso vamos definir o último parâmetro passado ao método extrair_conteúdo como False para excluir o campo da extração. Iremos renderizar o conteúdo extraído em PDF.
O exemplo de código a seguir mostra como extrair conteúdo entre um campo e parágrafo específico no documento usando o método extrair_conteúdo:
Em um documento, o conteúdo definido em um marcador é encapsulado pelos nós BookmarkStart e BookmarkEnd. O conteúdo encontrado entre esses dois nós constitui o marcador. Você pode passar qualquer um desses nós como qualquer marcador, mesmo aqueles de marcadores diferentes, desde que o marcador inicial apareça antes do marcador final no documento. Extrairemos esse conteúdo para um novo documento usando o código abaixo. A opção de parâmetro éInclusivo mostra como reter ou descartar o indicador.
O exemplo de código a seguir mostra como extrair o conteúdo referenciado em um marcador usando o método extrair_conteúdo:
Um comentário é composto pelos nós CommentRangeStart, CommentRangeEnd e Comment. Todos esses nós estão embutidos. Os dois primeiros nós encapsulam o conteúdo do documento referenciado pelo comentário, conforme visto na imagem abaixo. O próprio nó Comment é um InlineStory que pode conter parágrafos e execuções. Ele representa a mensagem do comentário vista como um balão de comentários no painel de revisão. Como este nó é inline e descendente de um corpo, você também pode extrair o conteúdo de dentro desta mensagem.
O comentário encapsula o título, o primeiro parágrafo e a tabela da segunda seção. Vamos extrair este comentário para um novo documento. A opção éInclusivo determina se o comentário em si será mantido ou descartado.
O exemplo de código a seguir mostra como fazer isso:
As maneiras de recuperar texto do documento são:
Um documento do Word pode conter caracteres de controle que designam elementos especiais como campo, fim de célula, fim de seção etc. A lista completa de possíveis caracteres de controle do Word é definida na classe ControlChar. O método Node.get_text retorna texto com todos os caracteres de controle presentes no nó.
Chamar to_string retorna a representação de texto simples do documento apenas sem caracteres de controle. Para obter mais informações sobre exportação como texto simples, consulte Usando SaveFormat.TEXT
O exemplo de código a seguir mostra a diferença entre chamar os métodos get_text e to_string em um nó:
SaveFormat.TextEste exemplo salva o documento da seguinte maneira:
O exemplo de código a seguir mostra como salvar um documento no formato TXT:
Pode ser necessário extrair imagens de documentos para executar algumas tarefas. Aspose.Words também permite que você faça isso.
O exemplo de código a seguir mostra como extrair imagens de um documento:
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.