сравнить текстовые документы в Java

Сравнение документов MS Word выполняется, чтобы узнать о различиях между двумя версиями документа. MS Word предоставляет встроенную возможность сравнения содержимого двух документов. Однако с увеличением количества документов становится сложно выполнять сравнение документов вручную. Чтобы автоматизировать этот процесс, в этой статье рассказывается, как сравнить два документа MS Word (DOC/DOCX) с помощью Java.

Java API для сравнения документов MS Word

Aspose.Words for Java — это мощный API для работы с документами, который позволяет создавать, читать, изменять и преобразовывать документы MS Word. Кроме того, он позволяет сравнивать два документа Word с учетом или игнорированием форматирования содержимого. Вы можете скачать API или установить его с помощью конфигураций 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>

Сравните документы MS Word с помощью Java

Ниже приведены шаги для выполнения простого сравнения документов Word с использованием Aspose.Words for Java API.

  • Загрузите документы для сравнения, используя класс Document.
  • Вызовите метод Document.compare(Document, String, Date) для сравнения документа с документом, переданным в качестве аргумента.

В следующем примере кода показано, как сравнить два документа MS Word с помощью 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

Сравнение документов Java Word — игнорировать форматирование

Может быть случай, когда документы имеют различное форматирование, примененное к содержимому. В таких случаях вы предпочитаете сравнивать только текст, игнорируя форматирование, верхние и нижние колонтитулы, сноски, таблицы, комментарии и т. д. Ниже приведены шаги, позволяющие игнорировать форматирование документа при сравнении двух документов MS Word.

В следующем примере кода показано, как сравнивать документы MS Word, игнорируя форматирование содержимого, с помощью Java.

// Полные примеры и файлы данных см. на странице 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 теперь содержит изменения как ревизии.
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");

Установить целевой документ Word для сравнения различий

Aspose.Words for Java также позволяет указать исходный документ Word во время сравнения. Для этого вы можете использовать свойство CompareOptions.setTarget(), которое относится к опции MS Word «Показать изменения в». В следующем примере кода показано, как указать целевой документ при сравнении.

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

CompareOptions options = new CompareOptions();
options.setIgnoreFormatting(true);
// Относится к параметру Microsoft Word «Показать изменения в» в диалоговом окне «Сравнить документы».
options.setTarget(ComparisonTargetType.NEW);

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

Установите гранулярность для сравнения файлов Word в Java

Вы также можете установить степень детализации изменений при сравнении двух документов MS Word. Это можно сделать с помощью свойства CompareOptions.setGranularity(). Ниже приведены возможные варианты детализации.

В следующем примере кода показано, как задать степень детализации при сравнении документов MS Word с использованием 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);

Вывод

В этой статье вы увидели, как сравнить два документа MS Word в различных сценариях с использованием Java. Вы можете узнать больше об Aspose.Words для Java, используя документацию.

Попробуй бесплатно

Aspose предлагает вам временную лицензию, чтобы вы могли бесплатно попробовать свои API. Вы можете получить свою оценку Aspose.Words для Java.

Смотрите также