Giới thiệu

Dù bạn làm việc với hợp đồng, chính sách nội bộ, thông số kỹ thuật, hay bản sao marketing, mô hình vẫn giống nhau: bạn nhanh chóng tích lũy nhiều phiên bản .docx và ở một thời điểm nào đó cần xem chính xác những gì đã thay đổi giữa chúng. Hộp thoại Compare tích hợp sẵn của Word đủ cho một kiểm tra thủ công thỉnh thoảng, nhưng nó không giúp nhiều khi việc so sánh trở thành một quy trình thường xuyên hoặc phải tự động hoá trên máy chủ.

GroupDocs.Comparison for .NET cho phép bạn thực hiện việc so sánh đó từ mã và tạo ra kết quả ở định dạng mà người đánh giá ưa thích. Thư viện hỗ trợ hai chế độ xuất kết quả so sánh cho tài liệu Word:

  1. Chế độ sửa đổi — các khác biệt được ghi dưới dạng đánh dấu sửa đổi (track‑changes) của Word. Người đánh giá mở tập tin, thấy các công cụ Review → Accept / Reject quen thuộc, và xử lý các thay đổi từng cái một.
  2. Chế độ đánh dấu — văn bản được chèn, xóa và sửa đổi được hiển thị bằng các màu nổi bật trực tiếp trong nội dung tài liệu, vì vậy các khác biệt có thể nhìn thấy ngay lập tức khi bạn đọc văn bản cuối cùng.

Trong bài viết này, chúng ta sẽ đi qua cả hai cách tiếp cận bằng các ví dụ C# thực tế, khám phá lớp WordCompareOptions và các thuộc tính của nó, và thảo luận khi nào mỗi chế độ lại hợp lý hơn.

Yêu cầu

Trước khi bắt đầu:

  • .NET 6.0 trở lên.
  • GroupDocs.Comparison for .NET — cài đặt qua NuGet:
dotnet add package GroupDocs.Comparison
  • Một tập tin giấy phép (GroupDocs.Comparison.lic). Nếu không có, thư viện sẽ chạy ở chế độ đánh giá với watermark và giới hạn kích thước. Bạn có thể yêu cầu một giấy phép tạm thời để thử nghiệm.
  • Hai file Word để so sánh — chúng ta sẽ gọi chúng là source.docxtarget.docx. Nội dung mẫu:
source.docx target.docx

Phương pháp 1: So sánh theo Dấu sửa đổi (Revision‑Track)

Khi nào nên dùng: người đánh giá cần chấp nhận hoặc từ chối từng thay đổi riêng lẻ trong Microsoft Word bằng các công cụ Review → Accept / Reject tích hợp sẵn — ví dụ, trong quá trình đàm phán hợp đồng hoặc vòng duyệt chính sách.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    var options = new WordCompareOptions
    {
        DetectStyleChanges = true,
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
    };

    comparer.Compare("result_revision.docx", options);
}

Tài liệu kết quả trong chế độ sửa đổi (theo dõi thay đổi):

Kết quả so sánh trong chế độ sửa đổi (theo dõi thay đổi)

Điều gì xảy ra bên trong:

  • ComparisonDisplayMode.Revisions báo cho động cơ xuất markup theo dõi thay đổi gốc của Word.
  • DetectStyleChanges = true khiến việc so sánh phát hiện các khác biệt về định dạng (đậm, kích thước phông, màu) cùng với các chỉnh sửa văn bản.
  • Tập tin đầu ra mở trong Microsoft Word với bảng Review sẵn sàng — mọi chèn, xóa và thay đổi kiểu đều được liệt kê và có thể được chấp nhận hoặc từ chối.

Vì chế độ sửa đổi không cần phải vẽ lại nội dung tài liệu — nó chỉ gắn siêu dữ liệu sửa đổi — nên thường nhanh hơn so với chế độ thứ hai.


Phương pháp 2: So sánh theo Chế độ Đánh dấu

Khi nào nên dùng: các bên liên quan muốn có một tài liệu sạch sẽ, thể hiện rõ những gì đã thay đổi nhưng không quan tâm tới việc xử lý từng sửa đổi riêng lẻ. Một kịch bản điển hình là quản lý mở phiên bản mới nhất trong Word và nhanh chóng quét các phần chèn và xóa được đánh dấu để hiểu ảnh hưởng của bản cập nhật.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    var options = new WordCompareOptions
    {
        DetectStyleChanges = true,
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Highlight
    };

    comparer.Compare("result_highlighted.docx", options);
}

Tài liệu kết quả trong chế độ đánh dấu:

Kết quả so sánh trong chế độ đánh dấu

Điều gì xảy ra bên trong:

  • ComparisonDisplayMode.Highlight hiển thị các khác biệt dưới dạng đánh dấu màu nội tuyến — màu đỏ cho xóa, màu xanh lá cho chèn, màu xanh dương cho thay đổi kiểu (các màu mặc định có thể điều chỉnh qua WordCompareOptions / CompareOptions và các StyleSettings liên quan).
  • Tài liệu sẵn sàng để đọc hoặc in mà không cần bước nào thêm.
  • Không có siêu dữ liệu theo dõi thay đổi nào được thêm vào tập tin.

Chế độ đánh dấu tốn nhiều công việc hơn nội bộ vì nó phải thay đổi nội dung thực tế của tài liệu và áp dụng định dạng. Đối với các tệp lớn, bạn có thể nhận thấy sự khác biệt đáng kể về hiệu năng so với chế độ sửa đổi.


Khám phá WordCompareOptions

Cả hai ví dụ trên đều sử dụng WordCompareOptions — một lớp kế thừa các cài đặt chung từ CompareOptions và bổ sung các thuộc tính đặc thù cho tài liệu Word. Thông qua loại này bạn kiểm soát chế độ hiển thị (DisplayMode), có theo dõi thay đổi kiểu hay không (DetectStyleChanges), tên tác giả sẽ xuất hiện trên các sửa đổi (RevisionAuthorName), cách xử lý ngắt dòng, bookmark, v.v.

Bên cạnh đó, lớp cơ sở CompareOptions cung cấp các style cho các mục chèn, xóa và thay đổi (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle), cho phép bạn tinh chỉnh màu sắc và định dạng của các đánh dấu khi cần.

Dưới đây là một ví dụ ngắn về cấu hình tùy chọn cho kiểm tra chỉ văn bản trong chế độ sửa đổi:

var options = new WordCompareOptions
{
    DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
    DetectStyleChanges = false,
    RevisionAuthorName = "QA Bot",
    CompareBookmarks = true
};

Lấy các Thay đổi Theo chương Trình

Bất kể bạn chọn chế độ xuất nào (sửa đổi hay đánh dấu), luôn có thể lấy danh sách có cấu trúc các khác biệt đã phát hiện thông qua API chung Comparer.GetChanges. Phương thức này hoạt động cho Word và tất cả các định dạng được hỗ trợ khác.

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    comparer.Compare("result_revision.docx");

    var changes = comparer.GetChanges(); // trả về ChangeInfo[]
}

Điều này hữu ích khi bạn cần xử lý hậu kỳ các thay đổi trong quy trình riêng của mình — ví dụ, để xây dựng báo cáo HTML tùy chỉnh, đưa các khác biệt vào hệ thống duyệt, hoặc tổng hợp thống kê về các chỉnh sửa. Xem tài liệu API chính thức để biết chi tiết hơn: Comparer.GetChanges.


Làm việc với Tài liệu Được Bảo vệ Bằng Mật khẩu

Nếu tài liệu được bảo vệ bằng mật khẩu, vẫn có thể so sánh: mật khẩu được truyền qua LoadOptions khi tạo Comparer. Cách tiếp cận này hoạt động tương tự cho Word, PDF và các định dạng được hỗ trợ khác.

using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

using (var comparer = new Comparer("source_protected.docx",
    new LoadOptions { Password = "secret" }))
{
    comparer.Add("target_protected.docx");

    var options = new WordCompareOptions
    {
        DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
    };

    comparer.Compare("result_protected.docx", options);
}

Nhận Dùng Thử Miễn Phí

Bạn có thể tải GroupDocs.Comparison for .NET từ trang phát hành chính thức. Để thử không giới hạn, yêu cầu một giấy phép tạm thời — không cần thẻ tín dụng.


Câu hỏi Thường gặp

Q: Tôi có cần cài đặt Microsoft Word hoặc Office trên server không?
A: Không. GroupDocs.Comparison là một thư viện .NET độc lập; nó tự đọc và ghi các tệp DOCX.

Q: Tôi có thể so sánh tài liệu ở các định dạng khác ngoài Word không?
A: Có — thư viện hỗ trợ PDF, bảng tính Excel, bản trình chiếu, tệp văn bản thuần và nhiều định dạng khác. Danh sách đầy đủ có trong tài liệu.

Q: Điều gì sẽ xảy ra nếu tôi không đặt giấy phép?
A: Thư viện chạy ở chế độ đánh giá. Các tài liệu đầu ra sẽ chứa watermark và chỉ xử lý một vài trang đầu. Một giấy phép tạm thời sẽ loại bỏ các hạn chế này cho việc thử nghiệm.

Q: Tôi có thể tùy chỉnh màu sắc đánh dấu không?
A: Các màu mặc định đáp ứng phần lớn trường hợp. Để kiểm soát chi tiết hơn, xem thuộc tính StyleSettings trên CompareOptions.


Kết luận

GroupDocs.Comparison for .NET cung cấp cho bạn hai cách sạch sẽ để so sánh tài liệu Word từ mã. Chế độ sửa đổi gắn liền với quy trình duyệt mà nhóm của bạn đã sử dụng; chế độ đánh dấu cung cấp một bản tóm tắt trực quan ngay lập tức cho những ai chỉ cần nhìn thấy thay đổi. Lớp WordCompareOptions cho phép bạn tinh chỉnh đầu ra — từ phát hiện kiểu và ghi chú tác giả đến so sánh bookmark và thuộc tính tài liệu.

Hãy chọn chế độ phù hợp với kịch bản của bạn, hoặc tạo cả hai và để mỗi đối tượng người dùng tự chọn cách xem ưu thích.

Tài nguyên Bổ sung