Em um dos artigos, já discutimos como redigir palavras em documentos como um desenvolvedor .NET. A estratégia é usada de várias maneiras para apagar conteúdo sensível, ocultar ou remover informações privadas como endereços de e-mail ou números de identificação. Este artigo discute como realizar a pesquisa de palavras em documentos Word DOC/DOCX em Java. Vamos discutir separadamente como localizar e substituir o texto, palavras ou frases por técnicas diferentes usando a API Java para redação.

Os seguintes tópicos serão abordados a seguir:

API Java para pesquisa de palavras e substituição de texto

O GroupDocs fornece uma API de redação Java que permite localizar e substituir o conteúdo de arquivos compatíveis com o MS Word e outros documentos de vários outros formatos de arquivo. Além da redação e rasterização de texto, a API suporta metadados, anotação, planilha e também os recursos de redação de imagens. Os formatos de arquivo suportados dos documentos do Word, planilhas, apresentações, imagens e documentos PDF estão disponíveis na documentação.

Baixe ou configure

Você pode baixar o arquivo JAR da seção de downloads, ou apenas obter as configurações de repositório e dependência mais recentes para o pox.xml do seu maven- baseados em aplicativos Java.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-redaction</artifactId>
        <version>21.12</version> 
</dependency>

O MS Word ou qualquer outro software de terceiros não é necessário para o processo de redação. Vamos agora começar com diferentes abordagens para lidar com pesquisa e substituição de texto. A seguir está a captura de tela de um documento do Word que é usado nos exemplos abaixo. Você também pode usar os mesmos métodos para outros formatos de documento com pouca ou nenhuma alteração no código-fonte.

Documento para redigir texto

Localizar e substituir palavras ou frases usando Java

As etapas a seguir explicam como localizar e substituir as ocorrências de uma palavra/frase em um documento do Word no aplicativo Java.

O código a seguir localiza e substitui a palavra “John Doe” no documento do Word acima usando Java. Ele substitui todas as ocorrências de “John Doe” pela palavra “[censurado]”.

// Encontre a frase exata e substitua-a por algum outro texto usando Java
final Redactor redactor  = new Redactor("path/document.docx");
redactor.apply(new ExactPhraseRedaction("John Doe", new ReplacementOptions("[censored]")));
// Se você deseja salvar o arquivo redigido em um local diferente com um nome diferente.
FileOutputStream stream = new FileOutputStream("path/exactPhrase.docx");
RasterizationOptions rasterOptions = new RasterizationOptions();
rasterOptions.setEnabled(false);
redactor.save(stream, rasterOptions);

A saída do código é a seguinte.

Redigir usando a frase exata

Pesquisa de palavras com distinção entre maiúsculas e minúsculas e substituição de texto em Java

Você parece cauteloso com as letras maiúsculas exatas da palavra e deseja apenas substituir a palavra que corresponde apenas à sua pesquisa que diferencia maiúsculas de minúsculas. O código a seguir substitui a existência da correspondência exata de maiúsculas e minúsculas da palavra “John Doe” em Java.

// Encontre a frase exata (diferencia maiúsculas de minúsculas) e substitua-a por algum outro texto usando Java
final Redactor redactor  = new Redactor("path/document.docx");
redactor.apply(new ExactPhraseRedaction("John Doe", true /*isCaseSensitive*/, new ReplacementOptions("[censored]")));
redactor.save();

A saída do código é a seguinte.

Redação com distinção entre maiúsculas e minúsculas

Substituir texto usando expressões regulares (RegEx) em Java

Se você não deseja alterar a palavra exata, mas algum padrão que existe em seu documento, você pode usar as expressões regulares. As etapas a seguir permitem localizar e substituir qualquer padrão de texto usando expressões regulares (RegEx) em seus aplicativos Java.

  • Carregue o documento usando a classe Redactor.
  • Crie o RegEx usando o RegexRedaction.
  • Forneça o texto usando ReplacementOptions para substituir a correspondência RegEx.
  • Use o método apply para substituir todas as correspondências de regex.
  • Use o método save para obter o documento redigido.

O código a seguir mostra como realizar a pesquisa de palavras em um arquivo do Word usando RegEx e substituí-lo por algum outro texto usando Java.

// Encontre texto usando expressão regular e substitua-o por outro texto usando Java
final Redactor redactor  = new Redactor("path/document.docx");
redactor.apply(new RegexRedaction("\\d{2}\\s*\\d{2}[^\\d]*\\d{6}", new ReplacementOptions("[censored]")));
redactor.save();

Segue a saída do código acima:

Redação RegEx

Substitua o texto por caixa colorida em Java

Se você não deseja substituir seu conteúdo e apenas deseja ocultá-lo, a API permite que você cubra a correspondência de texto desenhando uma caixa sobre ele. O código Java a seguir oculta o texto com a caixa retangular preta.

// Encontre texto e oculte-o desenhando um retângulo sobre ele usando Java
final Redactor redactor  = new Redactor("path/document.docx");
redactor.apply(new ExactPhraseRedaction("John Doe", true, new ReplacementOptions(java.awt.Color.BLACK)));
redactor.save();

A saída do código acima é a seguinte.

Ocultar texto usando a caixa

Obtenha uma licença de API gratuita

Você pode obter uma licença temporária gratuita para usar a API sem as limitações de avaliação.

Conclusão

Para resumir, você aprendeu como realizar a pesquisa de palavras para localizar texto em documentos do Word usando pesquisa de frase de texto exata, pesquisa com distinção entre maiúsculas e minúsculas, pesquisa usando expressões regulares e, por último, mas não menos importante, ocultando o texto em vez de substituí-lo. Você pode usar essas diferentes técnicas para substituir as descobertas de diferentes maneiras nos documentos do MS Word.

Para obter mais detalhes e aprender sobre a API, visite a documentação. Para dúvidas, entre em contato conosco pelo fórum.

Veja também