Después de leer este artículo, podremos comparar archivos de texto, archivos de Word, archivos PDF y otros documentos en aplicaciones basadas en Java. Al usar esta función, podemos comparar facturas, contratos, presentaciones, diseños de AutoCAD, listas de precios o archivos de programación. También tendremos el privilegio de resaltar los cambios identificados y tendremos la opción de aceptar o rechazar cualquier cambio. Incluso podemos crear nuestra propia herramienta de comparación de documentos similar a la lanzada por GroupDocs, utilizando la API de comparación de documentos para Java.

A continuación, analizará los siguientes temas:

API de comparación de documentos de Java

Como requisito previo, puede obtener GroupDocs.Comparison for Java de la sección descargas. Además, puede agregar lo siguiente en su pom.xml en el caso de aplicaciones basadas en maven:

Repositorio y Dependencias

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

Compare archivos de Word y muestre diferencias usando Java

Los pasos a continuación le mostrarán cómo comparar dos documentos de Word en solo unas pocas líneas de código Java. Como resultado, obtendrá el documento resultante que resaltará los cambios identificados.

  • Inicialice el objeto Comparador con la ruta del documento de origen.
  • Agregue el segundo documento para comparar usando el método agregar.
  • Llame al método comparar para obtener el resultado de la comparación. El método compare toma el nombre del documento de salida 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();
}

Aquí estoy mostrando el documento de Word resultante generado por el código anterior, y contiene las diferencias resaltadas de los dos documentos de Word comparados. El contenido eliminado se marcará en ROJO, el contenido agregado se mostrará en azul, sin embargo, el verde muestra el contenido modificado.

Word-file-text-comparation-and-show-dirffer

Comparar archivos de Word para texto usando Stream

De manera similar, puede pasar el documento como una secuencia a la clase Comparer para compararlo con el segundo documento. Aquí está el código Java para darle una idea 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();
}

Acepte o rechace los cambios comparados en el archivo de Word usando Java

Después de resaltar con éxito las diferencias identificadas, tiene la opción de aceptar o rechazar cualquier cambio. Solo para mostrar como ejemplo, estoy aceptando y rechazando los cambios alternativamente. Puede mostrar cada cambio uno por uno con el código similar y tomar sus decisiones para aceptar/rechazar cada cambio de acuerdo con sus requisitos.

// 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 archivos de texto y muestre diferencias usando Java

Usando la clase Comparer, también podemos comparar cualquier archivo de texto. A continuación se muestra el código similar para comparar dos archivos de texto en Java. Los pasos son exactamente los mismos que para comparar otros dos documentos:

  • Comience pasando el archivo de texto a la clase Comparador.
  • Agrega el segundo archivo usando el método add.
  • Llame al método comparar.
// 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();
}

Aquí está el documento de salida que muestra el resultado de la comparación de hacer coincidir dos archivos de texto usando el código anterior.

Comparar archivos de texto usando Java

Compare archivos PDF para la diferencia de texto usando Java

Podemos comparar los archivos PDF utilizando el mismo código anterior y simplemente cambiando las extensiones de archivo a “.pdf”. Solo por mencionar, el siguiente código compara dos archivos pdf y muestra diferencias 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"));

A continuación se muestra el resultado después de comparar los archivos PDF.

Comparación de texto de archivo PDF

Ver también

Muchos otros ejemplos de código abierto están disponibles públicamente en GitHub Repository. Puede descargar y ejecutar rápidamente los ejemplos usando la guía introducción. En caso de cualquier consulta, mire la documentación o comuníquese con nosotros en cualquier momento en el foro.