Sau khi xem qua bài viết này, chúng ta sẽ có thể so sánh các tệp văn bản, tệp Word, tệp PDF và các tài liệu khác trong các ứng dụng dựa trên Java. Bằng cách sử dụng tính năng này, chúng tôi có thể so sánh hóa đơn, hợp đồng, bản trình bày, thiết kế AutoCAD, bảng giá hoặc tệp lập trình. Chúng tôi cũng sẽ có đặc quyền làm nổi bật các thay đổi đã xác định và có tùy chọn chấp nhận hoặc từ chối bất kỳ thay đổi nào. Chúng ta thậm chí có thể xây dựng [công cụ so sánh tài liệu] của riêng mình, tương tự như công cụ do GroupDocs đưa ra, sử dụng API so sánh tài liệu cho Java.

Dưới đây, bạn sẽ trải qua các chủ đề sau:

API so sánh tài liệu Java

Như một điều kiện tiên quyết, bạn có thể lấy GroupDocs.Comparison for Java từ phần tải xuống. Ngoài ra, bạn chỉ có thể thêm phần sau vào tệp pom.xml của mình trong trường hợp ứng dụng dựa trên maven:

Kho lưu trữ & Phụ thuộc

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

So sánh các tệp Word và hiển thị sự khác biệt bằng Java

Các bước dưới đây sẽ chỉ cho bạn cách so sánh hai tài liệu Word bất kỳ chỉ trong một vài dòng mã Java. Kết quả là bạn sẽ nhận được tài liệu kết quả sẽ làm nổi bật các thay đổi đã xác định.

  • Khởi tạo đối tượng Comparer với đường dẫn tài liệu nguồn.
  • Thêm tài liệu thứ hai để so sánh bằng phương pháp add.
  • Gọi phương thức so sánh để lấy kết quả so sánh. Phương thức so sánh lấy tên của tài liệu đầu ra làm tham số.
// 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();
}

Ở đây tôi đang hiển thị tài liệu Word kết quả được tạo bởi đoạn mã trên và nó chứa các điểm khác biệt được đánh dấu của hai tài liệu Word được so sánh. Nội dung đã xóa sẽ được đánh dấu bằng màu ĐỎ, nội dung đã thêm sẽ được hiển thị bằng Màu xanh lam, tuy nhiên, Màu xanh lá cây hiển thị nội dung đã sửa đổi.

word-file-text-so sánh-và-show-dirffer

So sánh các tệp Word cho văn bản bằng cách sử dụng Luồng

Tương tự, bạn có thể chuyển tài liệu dưới dạng luồng tới lớp Trình so sánh để so sánh nó với tài liệu thứ hai. Đây là mã Java để cung cấp cho bạn một ý tưởng rõ ràng:

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

Chấp nhận hoặc Từ chối các Thay đổi được So sánh trong Tệp Word bằng Java

Sau khi đánh dấu thành công những điểm khác biệt đã xác định, bạn có tùy chọn chấp nhận hoặc từ chối bất kỳ thay đổi nào. Chỉ để làm ví dụ, tôi chấp nhận và từ chối các thay đổi theo cách khác. Bạn có thể hiển thị từng thay đổi một với mã tương tự và đưa ra quyết định chấp nhận/từ chối từng thay đổi theo yêu cầu của bạn.

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

So sánh các tệp văn bản và hiển thị sự khác biệt bằng cách sử dụng Java

Sử dụng lớp So sánh, chúng ta cũng có thể so sánh bất kỳ tệp văn bản nào. Dưới đây là mã tương tự để so sánh hai tệp văn bản trong Java. Các bước hoàn toàn giống như so sánh bất kỳ hai tài liệu nào khác:

  • Bắt đầu với việc chuyển tệp văn bản tới lớp So sánh.
  • Thêm tệp thứ hai bằng phương thức add.
  • Gọi phương thức so sánh.
// 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();
}

Đây là tài liệu đầu ra hiển thị kết quả so sánh của việc khớp hai tệp văn bản bằng mã trên.

So sánh các tệp văn bản bằng Java

So sánh các tệp PDF để biết sự khác biệt về văn bản bằng Java

Chúng tôi có thể so sánh các tệp PDF bằng cách sử dụng cùng mã ở trên và chỉ cần thay đổi phần mở rộng tệp thành “.pdf”. Chỉ cần đề cập, đoạn mã dưới đây so sánh hai tệp pdf và cho thấy sự khác biệt trong 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"));

Dưới đây là kết quả sau khi so sánh các tệp PDF.

So sánh văn bản tệp PDF

Xem thêm

Nhiều ví dụ mã nguồn mở khác có sẵn công khai tại Kho lưu trữ GitHub. Bạn có thể tải xuống và chạy nhanh các ví dụ bằng hướng dẫn bắt đầu. Trong trường hợp có bất kỳ thắc mắc nào, hãy xem tài liệu hoặc liên hệ với chúng tôi bất kỳ lúc nào trên diễn đàn.