comparar documentos do word em Java

A comparação de documentos do MS Word é realizada para saber a diferença entre duas versões de um documento. O MS Word oferece uma opção integrada para comparar o conteúdo de dois documentos. No entanto, com o aumento do número de documentos, torna-se difícil realizar a comparação de documentos manualmente. Para automatizar esse processo, este artigo aborda como comparar dois documentos do MS Word (DOC/DOCX) usando Java.

API Java para comparar documentos do MS Word

Aspose.Words for Java é uma poderosa API de manipulação de documentos que permite criar, ler, modificar e converter documentos do MS Word. Além disso, permite comparar dois documentos do Word, além de considerar ou ignorar a formatação do conteúdo. Você pode baixar a API ou instalá-la usando as configurações do 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>

Compare documentos do MS Word usando Java

A seguir estão as etapas para executar uma comparação simples de documento do Word usando a API Aspose.Words para Java.

O exemplo de código a seguir mostra como comparar dois documentos do 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

Comparação de documentos Java Word - Ignorar formatação

Pode ser o caso quando os documentos têm formatação diferente aplicada ao conteúdo. Nesses casos, você preferiria comparar o texto apenas ignorando a formatação, cabeçalhos/rodapés, notas de rodapé, tabelas, comentários, etc. A seguir estão as etapas para ignorar a formatação do documento ao comparar dois documentos do MS Word.

O exemplo de código a seguir mostra como comparar documentos do MS Word ignorando a formatação do conteúdo usando Java.

// Para exemplos completos e arquivos de dados, acesse 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 agora contém alterações como revisões.
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");

Definir documento do Word de destino para diferenças de comparação

Aspose.Words para Java também permite que você especifique o documento do Word de origem durante a comparação. Para isso, você pode usar a propriedade CompareOptions.setTarget() que se relaciona com a opção “Mostrar alterações em” do MS Word. O exemplo de código a seguir mostra como especificar o documento de destino na comparação.

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

CompareOptions options = new CompareOptions();
options.setIgnoreFormatting(true);
// Relaciona-se com a opção "Mostrar alterações em" do Microsoft Word na caixa de diálogo "Comparar documentos".
options.setTarget(ComparisonTargetType.NEW);

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

Definir granularidade para comparar arquivos do Word em Java

Você também pode definir a granularidade das alterações ao comparar dois documentos do MS Word. Isso pode ser feito usando a propriedade CompareOptions.setGranularity(). A seguir estão as opções de granularidade possíveis.

O exemplo de código a seguir mostra como definir a granularidade ao comparar documentos do 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);

Conclusão

Neste artigo, você viu como comparar dois documentos do MS Word em vários cenários usando Java. Você pode explorar mais sobre o Aspose.Words para Java usando a documentação.

Experimentar gratuitamente

A Aspose oferece uma licença temporária para você experimentar suas APIs gratuitamente. Você pode obter o seu para avaliar o Aspose.Words for Java.

Veja também