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:
- Compare arquivos do Word e mostre as diferenças.
- Compare arquivos do Word usando fluxos.
- Aceitar ou rejeitar as alterações identificadas no arquivo Word.
- Compare arquivos de texto e destaque as diferenças.
- Compare arquivos PDF usando Java.
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.
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.
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.
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.