Après avoir parcouru cet article, nous pourrons comparer des fichiers texte, des fichiers Word, des fichiers PDF et d’autres documents dans des applications basées sur Java. En utilisant cette fonctionnalité, nous pouvons comparer des factures, des contrats, des présentations, des conceptions AutoCAD, des listes de prix ou des fichiers de programmation. Nous aurons également le privilège de mettre en évidence les changements identifiés et d’avoir la possibilité d’accepter ou de rejeter tout changement. Nous pouvons même créer notre propre outil de comparaison de documents similaire à celui lancé par GroupDocs, en utilisant l’API de comparaison de documents pour Java.

Ci-dessous, vous passerez en revue les sujets suivants :

API de comparaison de documents Java

Comme prérequis, vous pouvez obtenir GroupDocs.Comparison pour Java dans la section downloads. De plus, vous pouvez simplement ajouter ce qui suit dans votre pom.xml en cas d’applications basées sur maven :

Référentiel et dépendances

<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>

Comparer des fichiers Word et afficher les différences à l’aide de Java

Les étapes ci-dessous vous montreront comment comparer deux documents Word en quelques lignes de code Java. En conséquence, vous obtiendrez le document résultant qui mettra en évidence les modifications identifiées.

  • Initialiser l’objet Comparer avec le chemin du document source.
  • Ajoutez le deuxième document à comparer en utilisant la méthode add.
  • Appelez la méthode compare pour obtenir le résultat de la comparaison. La méthode de comparaison prend le nom du document de sortie comme paramètre.
// 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();
}

Ici, j’affiche le document Word résultant généré par le code ci-dessus, et il contient les différences mises en évidence des deux documents Word comparés. Le contenu supprimé sera marqué en ROUGE, le contenu ajouté sera affiché en Bleu, cependant, le Vert montre le contenu modifié.

word-file-text-comparison-and-show-dirffer

Comparer des fichiers Word pour du texte à l’aide de Stream

Vous pouvez également passer le document en tant que flux à la classe Comparer pour le comparer avec le deuxième document. Voici le code Java pour vous donner une idée claire :

// 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();
}

Accepter ou rejeter les modifications comparées dans le fichier Word à l’aide de Java

Après avoir réussi à mettre en évidence les différences identifiées, vous avez la possibilité d’accepter ou de rejeter toute modification. Juste pour montrer à titre d’exemple, j’accepte et je rejette les modifications alternativement. Vous pouvez afficher chaque modification une par une avec le code similaire et prendre vos décisions pour accepter/rejeter chaque modification en fonction de vos besoins.

// 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();
}

Comparer des fichiers texte et afficher les différences à l’aide de Java

En utilisant la classe Comparer, nous pouvons également comparer n’importe quel fichier texte. Vous trouverez ci-dessous le code similaire permettant de comparer deux fichiers texte en Java. Les étapes sont exactement les mêmes que pour comparer deux autres documents :

  • Commencez par transmettre le fichier texte à la classe Comparer.
  • Ajoutez le deuxième fichier en utilisant la méthode add.
  • Appelez la méthode comparer.
// 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();
}

Voici le document de sortie qui montre le résultat de la comparaison de la correspondance de deux fichiers texte à l’aide du code ci-dessus.

Comparer des fichiers texte à l'aide de Java

Comparez les fichiers PDF pour la différence de texte à l’aide de Java

Nous pouvons comparer les fichiers PDF en utilisant le même code ci-dessus et en changeant simplement les extensions de fichier en “.pdf”. Juste pour mentionner, le code ci-dessous compare deux fichiers pdf et montre les différences en 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"));

Vous trouverez ci-dessous le résultat après avoir comparé les fichiers PDF.

Comparaison de texte de fichier PDF

Voir également

De nombreux autres exemples open source sont accessibles au public sur GitHub Repository. Vous pouvez télécharger et exécuter rapidement les exemples à l’aide du guide de démarrage. En cas de question, consultez la documentation ou contactez-nous à tout moment sur le forum.