comparar documentos de Word en Java

La comparación de documentos de MS Word se realiza para conocer la diferencia entre dos versiones de un documento. MS Word proporciona una opción integrada para comparar el contenido de dos documentos. Sin embargo, con el aumento del número de documentos, resulta difícil realizar la comparación de documentos manualmente. Para automatizar este proceso, este artículo cubre cómo comparar dos documentos de MS Word (DOC/DOCX) usando Java.

API de Java para comparar documentos de MS Word

Aspose.Words for Java es una potente API de manipulación de documentos que le permite crear, leer, modificar y convertir documentos de MS Word. Además, le permite comparar dos documentos de Word y considerar o ignorar el formato del contenido. Puede descargar la API o instalarla usando las configuraciones de Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>20.9</version>
    <classifier>jdk17</classifier>
</dependency>

Compara documentos de MS Word usando Java

Los siguientes son los pasos para realizar una comparación simple de documentos de Word utilizando Aspose.Words for Java API.

El siguiente ejemplo de código muestra cómo comparar dos documentos de MS Word usando Java.

Document docA = new Document(dataDir + "DocumentA.doc");
Document docB = new Document(dataDir + "DocumentB.doc");
docA.compare(docB, "user", new Date()); // docA now contains changes as revisions

Comparación de documentos de Java Word - Ignorar formato

Puede darse el caso de que los documentos tengan un formato diferente aplicado al contenido. En tales casos, preferiría comparar el texto solo ignorando el formato, encabezados/pies de página, notas al pie, tablas, comentarios, etc. Los siguientes son los pasos para ignorar el formato del documento al comparar dos documentos de MS Word.

El siguiente ejemplo de código muestra cómo comparar documentos de MS Word ignorando el formato del contenido usando Java.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-words/Aspose.Words-for-Java
String dataDir = Utils.getDataDir(CompareTwoWordDocumentswithCompareOptions.class);

com.aspose.words.Document docA = new com.aspose.words.Document(dataDir + "DocumentA.doc");
com.aspose.words.Document docB = new com.aspose.words.Document(dataDir + "DocumentB.doc");

com.aspose.words.CompareOptions options = new com.aspose.words.CompareOptions();
options.setIgnoreFormatting(true);
options.setIgnoreHeadersAndFooters(true);
options.setIgnoreCaseChanges(true);
options.setIgnoreTables(true);
options.setIgnoreFields(true);
options.setIgnoreComments(true);
options.setIgnoreTextboxes(true);
options.setIgnoreFootnotes(true);

// DocA ahora contiene cambios como revisiones.
docA.compare(docB, "user", new Date(), options);
if (docA.getRevisions().getCount() == 0)
    System.out.println("Documents are equal");
else
    System.out.println("Documents are not equal");

Establecer documento de Word de destino para diferencias de comparación

Aspose.Words for Java también le permite especificar el documento fuente de Word durante la comparación. Para esto, puede usar la propiedad CompareOptions.setTarget() que se relaciona con la opción “Mostrar cambios en” de MS Word. El siguiente ejemplo de código muestra cómo especificar el documento de destino en la comparación.

Document docA = new Document(dataDir + "TestFile.doc");
Document docB = new Document(dataDir + "TestFile - Copy.doc");

CompareOptions options = new CompareOptions();
options.setIgnoreFormatting(true);
// Se relaciona con la opción "Mostrar cambios en" de Microsoft Word en el cuadro de diálogo "Comparar documentos".
options.setTarget(ComparisonTargetType.NEW);

docA.compare(docB, "user", new Date(), options);

Establecer granularidad para comparar archivos de Word en Java

También puede establecer la granularidad de los cambios al comparar dos documentos de MS Word. Esto se puede hacer usando la propiedad CompareOptions.setGranularity(). Las siguientes son las posibles opciones de granularidad.

El siguiente ejemplo de código muestra cómo configurar la granularidad al comparar documentos de MS Word usando Java.

DocumentBuilder builderA = new DocumentBuilder(new Document());
DocumentBuilder builderB = new DocumentBuilder(new Document());

builderA.writeln("This is A simple word");
builderB.writeln("This is B simple words");

CompareOptions co = new CompareOptions();
co.setGranularity(Granularity.CHAR_LEVEL);

builderA.getDocument().compare(builderB.getDocument(), "author", new Date(), co);

Conclusión

En este artículo, ha visto cómo comparar dos documentos de MS Word en varios escenarios utilizando Java. Puede explorar más sobre Aspose.Words for Java utilizando la documentación.

Prueba gratis

Aspose ofrece una licencia temporal para que pruebe sus API de forma gratuita. Puede obtener el suyo para evaluar Aspose.Words for Java.

Ver también