Прочитав эту статью, мы сможем сравнивать текстовые файлы, файлы Word, PDF-файлы и другие документы в приложениях на основе Java. Используя эту функцию, мы можем сравнивать счета-фактуры, контракты, презентации, проекты AutoCAD, прайс-листы или программные файлы. У нас также будет привилегия выделять выявленные изменения и иметь возможность либо принять, либо отклонить любое изменение. Мы даже можем создать собственный инструмент сравнения документов, аналогичный тому, который запущен GroupDocs, используя API сравнения документов для Java.

Ниже вы ознакомитесь со следующими темами:

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

В качестве предварительного условия вы можете получить GroupDocs.Comparison for Java из раздела загрузки. Кроме того, вы можете просто добавить следующее в свой pom.xml в случае приложений на основе maven:

Репозиторий и зависимости

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

Сравните файлы Word и покажите различия с помощью Java

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

  • Инициализируйте объект Comparer с путем к исходному документу.
  • Добавьте второй документ для сравнения, используя метод add.
  • Вызовите метод compare, чтобы получить результат сравнения. Метод сравнения принимает в качестве параметра имя выходного документа.
// 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();
}

Здесь я показываю результирующий документ Word, сгенерированный приведенным выше кодом, и он содержит выделенные различия двух сравниваемых документов Word. Удаленный контент будет отмечен КРАСНЫМ цветом, добавленный контент будет отображаться синим цветом, однако зеленый показывает измененный контент.

слово-файл-текст-сравнение-и-показать-dirffer

Сравните файлы Word для текста с помощью Stream

Аналогичным образом вы можете передать документ в виде потока классу Comparer, чтобы сравнить его со вторым документом. Вот код Java, чтобы дать вам четкое представление:

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

Принять или отклонить сравниваемые изменения в файле Word с помощью Java

После успешного выделения выявленных различий у вас есть возможность либо принять, либо отклонить любое изменение. Просто чтобы показать в качестве примера, я поочередно принимаю и отклоняю изменения. Вы можете отображать каждое изменение одно за другим с похожим кодом и принимать решения о принятии/отклонении каждого изменения в соответствии с вашими требованиями.

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

Сравните текстовые файлы и покажите различия с помощью Java

Используя класс Comparer, мы также можем сравнить любой текстовый файл. Ниже приведен аналогичный код для сравнения двух текстовых файлов в Java. Шаги точно такие же, как и при сравнении любых других двух документов:

  • Начните с передачи текстового файла в класс Comparer.
  • Добавьте второй файл, используя метод add.
  • Вызвать метод compare.
// 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();
}

Вот выходной документ, который показывает результат сравнения двух текстовых файлов с использованием приведенного выше кода.

Сравните текстовые файлы с помощью Java

Сравните файлы PDF для текстовых различий с помощью Java

Мы можем сравнить PDF-файлы, используя тот же приведенный выше код, просто изменив расширение файла на «.pdf». Просто отметим, что приведенный ниже код сравнивает два файла PDF и показывает различия в 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"));

Ниже приведен результат после сравнения файлов PDF.

Сравнение текста PDF-файла

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

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