Giới thiệu
Cho 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, thì 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à vào 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 lần kiểm tra thủ công thỉnh thoảng, nhưng không hữu ích khi việc so sánh trở thành một phần của quy trình thường xuyên hoặc cần 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á của bạn thích. Thư viện hỗ trợ hai chế độ đầu ra cho tài liệu Word:
- Revision mode — 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ở file, 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.
- Highlight mode — 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 thân tài liệu, vì vậy các khác biệt có thể nhìn thấy ngay khi bạn đọc bản cuối cùng.
Trong bài viết này, chúng tôi sẽ hướng dẫn qua cả hai cách tiếp cận với 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à hợp lý hơn.
Yêu cầu trước
Trước khi bắt đầu:
- .NET 6.0 hoặc mới hơn.
- GroupDocs.Comparison for .NET — cài đặt qua NuGet:
dotnet add package GroupDocs.Comparison
- Một tệp 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 tệp Word để so sánh — chúng tôi sẽ gọi chúng là
source.docxvàtarget.docx. Nội dung ví dụ:
source.docx |
target.docx |
|---|
Method 1: Revision‑Track Comparison
Khi nào nên dùng: người đánh giá cần chấp nhận hoặc từ chối mỗi thay đổi riêng lẻ trong Microsoft Word bằng các công cụ Review → Accept / Reject tích hợp — ví dụ, trong giai đoạn đàm phán hợp đồng hoặc vòng phê 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ả ở chế độ revision (track changes):
Điều gì xảy ra phía sau:
ComparisonDisplayMode.Revisionsbáo cho engine tạo ra markup track‑changes gốc của Word.DetectStyleChanges = truekhiến việc so sánh bắt các khác biệt định dạng (in đậ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 đầu ra mở trong Microsoft Word với bảng Review sẵn sàng — mọi chèn, xóa và chỉnh sửa kiểu dáng đều được liệt kê và có thể chấp nhận hoặc từ chối.
Vì chế độ revision không cần tái‑render nội dung tài liệu — nó chỉ gắn metadata sửa đổi — nên thường nhanh hơn so với hai chế độ.
Method 2: Highlight‑Mode Comparison
Khi nào nên dùng: các bên liên quan muốn một tài liệu sạch sẽ, rõ ràng hiển thị những gì đã thay đổi nhưng không muốn xử lý từng sửa đổi. Một kịch bản thường gặp là một quản lý mở phiên bản mới nhất trong Word và nhanh chóng quét các chèn và xóa được tô màu để hiểu tác độ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ả ở chế độ highlight:
Điều gì xảy ra phía sau:
ComparisonDisplayMode.Highlighthiển thị các khác biệt dưới dạng màu nổi bật trong dòng — màu đỏ cho xóa, màu xanh lá cho chèn, màu xanh dương cho thay đổi kiểu (màu mặc định có thể điều chỉnh quaWordCompareOptions/CompareOptionsvàStyleSettingsliê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ó metadata track‑changes nào được thêm vào tệp.
Chế độ highlight thực hiện nhiều công việc nội bộ hơn vì nó phải sửa đổ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ế độ revision.
Exploring 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 riêng cho tài liệu Word. Thông qua kiểu 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ả xuất hiện trên các revision (RevisionAuthorName), cách xử lý ngắt dòng, bookmark, vv.
Bên cạnh đó, CompareOptions cơ bản 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 và định dạng của các highlight khi cần.
Dưới đây là một ví dụ nhỏ về cấu hình tùy chọn cho kiểm tra chỉ văn bản trong chế độ revision:
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
DetectStyleChanges = false,
RevisionAuthorName = "QA Bot",
CompareBookmarks = true
};
Getting Changes Programmatically
Bất kể bạn chọn chế độ đầu ra nào (revisions hay highlight), bạn luôn có thể lấy danh sách có cấu trúc các khác biệt được 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(); // returns 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 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 đánh giá, 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 thêm chi tiết: Comparer.GetChanges.
Working with Password‑Protected Documents
Nếu tài liệu được bảo vệ bằng mật khẩu, chúng vẫn có thể được 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);
}
Get a Free Trial
Bạn có thể tải xuống GroupDocs.Comparison cho .NET từ trang phát hành chính thức. Để thử nghiệm 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.
Frequently Asked Questions
Q: Tôi có cần cài đặt Microsoft Word hoặc Office trên máy chủ 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 hơn nữa. Danh sách đầy đủ có trong tài liệu.
Q: Điều gì sẽ xảy ra nếu tôi không thiết lập giấy phép?
A: Thư viện sẽ hoạt động ở chế độ đánh giá. Các tài liệu đầu ra sẽ chứa watermark và chỉ một vài trang đầu được xử lý. 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 highlight không?
A: Các màu mặc định hoạt động cho hầu hết các trường hợp. Đối với kiểm soát style nâng cao, hãy xem thuộc tính StyleSettings trên CompareOptions.
Conclusion
GroupDocs.Comparison cho .NET cung cấp cho bạn hai cách sạch sẽ để so sánh (diff) tài liệu Word từ mã. Chế độ revision tích hợp trực tiếp vào quy trình đánh giá mà đội ngũ của bạn đã sử dụng; chế độ highlight cung cấp bản tóm tắt trực quan ngay lập tức cho những người chỉ cần nhìn thấy các thay đổi. Lớp WordCompareOptions cho phép bạn tinh chỉnh đầu ra — từ phát hiện style và gán tên tác giả đến so sánh bookmark và thuộc tính tài liệu.
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 lựa chọn cách xem ưa thích.