Ознайомившись із цією статтею, ми зможемо порівнювати текстові файли, файли 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. Видалений вміст буде позначено ЧЕРВОНИМ кольором, доданий вміст відображатиметься синім кольором, однак зеленим буде позначено змінений вміст.

word-file-text-comparison-and-show-dirffer

Порівняйте файли Word для тексту за допомогою потоку

Так само можна передати документ як потік до класу 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 Repository. Ви можете завантажити та швидко запустити приклади за допомогою посібника початок роботи. Якщо у вас виникли запитання, перегляньте документацію або будь-коли зв’яжіться з нами на форумі.