Os modelos são amplamente utilizados para gerar documentos personalizados, substituindo as chaves do modelo pelos respectivos valores. Este artigo orienta sobre como localizar e substituir texto e palavras em documentos PDF em Java. Discutiremos separadamente como realizar a pesquisa de palavras e frases, pesquisa de palavras com distinção entre maiúsculas e minúsculas, substituindo o texto encontrado usando expressões regulares. Por fim, aprenderemos como ocultar a parte pesquisada do texto usando Java.

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

API Java Redaction para substituir texto

O GroupDocs fornece API Java para aplicar vários tipos de redação. Ele permite redigir, ocultar ou remover o conteúdo e até metadados de documentos, apresentações, planilhas, arquivos PDF e imagens dentro do aplicativo. Para obter mais detalhes sobre a API, visite sua 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 pom.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>

Uma das coisas boas é que não há necessidade de instalar nenhum editor de PDF ou qualquer outro software de terceiros para redação de PDF. Veja a seguir o conteúdo do documento PDF usado nos exemplos abaixo para redação. A mesma abordagem funcionará para outros formatos de documento com quase nenhuma diferença no código-fonte.

Localizar e substituir palavra ou frase em PDF em Java

Você pode usar esse recurso para ocultar quaisquer dados privados e também para criar um novo documento personalizado a partir de qualquer modelo. A etapa a seguir explica como encontrar qualquer palavra/frase em um documento PDF e substituí-la por algum outro texto no aplicativo Java.

  • Carregue o arquivo PDF usando a classe Redactor.
  • Encontre a frase ou palavra exata usando ExactPhraseRedaction e ReplacementOptions.
  • Aplique a redação usando o método apply().
  • Salve o novo documento com as alterações usando o método save().

O código a seguir localiza e substitui as palavras em um arquivo PDF usando Java. Mais precisamente, ele oculta todas as ocorrências de “John Doe” substituindo-o pela palavra “[censurado]”.

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

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

Localizar e substituir texto ou frase que diferencia maiúsculas de minúsculas em PDF usando Java

Você pode realizar a pesquisa e redação com distinção entre maiúsculas e minúsculas. O código a seguir substitui a ocorrência com distinção entre maiúsculas e minúsculas da palavra “John Doe”, mas não “john doe” em um documento PDF usando Java.

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

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

Substituir texto em PDF por expressões regulares (RegEx) em Java

Da mesma forma, você pode substituir qualquer padrão de texto específico usando expressões regulares. As etapas a seguir permitem que você redija PDF após pesquisar usando expressão regular (RegEx) em seus aplicativos Java.

  • Carregue o documento PDF usando a classe Redactor.
  • Encontre a correspondência regex usando a classe RegexRedaction com ReplacementOptions.
  • Aplicar nas alterações ao documento usando o método apply().
  • Salve o documento editado usando o método save() apropriado.

O código Java a seguir mostra como encontrar um determinado padrão de texto em um documento PDF usando RegEx e posteriormente substituí-lo/ocultá-lo por outro texto.

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

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

Substitua o texto por caixa colorida em Java

Se você deseja apenas ocultar as informações confidenciais pesquisadas em seu arquivo PDF, basta colocar uma capa nele. A API permite ocultar o texto pesquisado. O código a seguir coloca o retângulo preto sobre o texto privado mencionado em Java.

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

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

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, aprendemos como encontrar determinado texto em arquivos PDF usando diferentes técnicas de pesquisa. Mais tarde, redigimos os arquivos PDF substituindo ou ocultando o texto nos aplicativos em Java. Mais precisamente, realizamos uma busca simples pelas palavras, frases, pesquisadas com distinção entre maiúsculas e minúsculas e usando RegEx em Java. Por fim, alteramos os resultados da pesquisa com algum outro texto ou simplesmente ocultando-o com cores sobre ele.

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

Veja também