Depois de ler este artigo, poderemos comparar arquivos de texto, arquivos do Word, arquivos PDF e outros documentos em aplicativos baseados em Java. Ao usar esse recurso, podemos comparar faturas, contratos, apresentações, projetos AutoCAD, listas de preços ou arquivos de programação. Teremos também o privilégio de destacar as alterações identificadas e ter a opção de aceitar ou rejeitar qualquer alteração. Podemos até construir nossa própria ferramenta de comparação de documentos semelhante à lançada pelo GroupDocs, usando a API de comparação de documentos para Java.

Abaixo, você passará pelos seguintes tópicos:

API de comparação de documentos Java

Como pré-requisito, você pode obter GroupDocs.Comparison for Java na seção downloads. Além disso, você pode adicionar o seguinte em seu pom.xml no caso de aplicativos baseados em maven:

Repositório e dependências

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-comparison</artifactId>
        <version>20.4</version> 
</dependency>

Comparar arquivos do Word e mostrar diferenças usando Java

As etapas abaixo mostrarão a comparação de dois documentos do Word em apenas algumas linhas de código Java. Como resultado, você obterá o documento resultante que destacará as alterações identificadas.

  • Inicialize o objeto Comparer com o caminho do documento de origem.
  • Adicione o segundo documento para comparar usando o método add.
  • Chame o método compare para obter o resultado da comparação. O método compare usa o nome do documento de saída como parâmetro.
// Compare two Word files from the provided location on disk
Comparer comparer = new Comparer("source.docx");
try {
    comparer.add("target.docx");
    comparer.compare("comparison.docx");
}
finally {
    comparer.dispose();
}

Aqui estou exibindo o documento do Word resultante gerado pelo código acima e ele contém as diferenças destacadas dos dois documentos do Word comparados. O conteúdo excluído será marcado em VERMELHO, o conteúdo adicionado será exibido em Azul, no entanto, o Verde mostra o conteúdo modificado.

palavra-arquivo-texto-comparação-e-mostrar-dirffer

Comparar arquivos do Word para texto usando o Stream

Da mesma forma, você pode passar o documento como um fluxo para a classe Comparer para compará-lo com o segundo documento. Aqui está o código Java para lhe dar uma ideia clara:

// Compare two Word file using Stream
Comparer comparer = new Comparer(new FileInputStream("source.docx"));
try {
    comparer.add(new FileInputStream("target.docx"));
    comparer.compare(new FileOutputStream("result.docx"));
} 
finally {
    comparer.dispose();
}

Aceite ou rejeite as alterações comparadas no arquivo do Word usando Java

Depois de destacar com sucesso as diferenças identificadas, você tem a opção de aceitar ou rejeitar qualquer alteração. Apenas para dar um exemplo, estou aceitando e rejeitando as mudanças alternativamente. Você pode exibir cada alteração uma a uma com o código semelhante e tomar suas decisões para aceitar/rejeitar cada alteração de acordo com sua necessidade.

// Accept or Reject the identified changes of Word document in Java
Comparer comparer = new Comparer(source);
try {
    comparer.add(target);
    comparer.compare();
    ChangeInfo\[\] changes = comparer.getChanges();
    System.out.println("changes.length: " + changes.length + ".");
    // Accept or Reject the changes
    for (int n = 0; n < changes.length; n++) {
    	if (n % 2 == 0) {
    		changes\[n\].setComparisonAction(ComparisonAction.ACCEPT);
    	}
    	else {
    		changes\[n\].setComparisonAction(ComparisonAction.REJECT);
    	}
    }
    // Apply your decisions to get the resultant document.
    comparer.applyChanges(outputFileName, new SaveOptions(), new ApplyChangeOptions(changes));
}
finally {
    comparer.dispose();
}

Compare arquivos de texto e mostre diferenças usando Java

Usando a classe Comparer, também podemos comparar qualquer arquivo de texto. Abaixo está o código semelhante para comparar dois arquivos de texto em Java. As etapas são exatamente as mesmas da comparação de quaisquer outros dois documentos:

  • Comece passando o arquivo de texto para a classe Comparer.
  • Adicione o segundo arquivo usando o método add.
  • Chame o método compare.
// Compare two text files to identify and highlight changes.
Comparer comparer = new Comparer("source.txt");
try {
    comparer.add("target.txt");
    comparer.compare("comparison.txt");
}
finally {
    comparer.dispose();
}

Aqui está o documento de saída que mostra o resultado da comparação da correspondência de dois arquivos de texto usando o código acima.

Comparar arquivos de texto usando Java

Compare arquivos PDF para diferença de texto usando Java

Podemos comparar os arquivos PDF usando o mesmo código acima, e apenas alterando as extensões dos arquivos para “.pdf”. Só para mencionar, o código abaixo compara dois arquivos pdf e mostra diferenças em Java.

// Compare two PDF file using Stream
Comparer comparer = new Comparer(new FileInputStream("source.pdf"));
comparer.add(new FileInputStream("target.pdf"));
comparer.compare(new FileOutputStream("result.pdf"));

Abaixo está o resultado depois de comparar os arquivos PDF.

Comparação de texto de arquivo PDF

Veja também

Muitos outros exemplos de código aberto estão disponíveis publicamente em GitHub Repository. Você pode baixar e executar rapidamente os exemplos usando o guia de primeiros passos. Em caso de dúvidas, consulte a documentação ou entre em contato conosco a qualquer momento no fórum.