Wprowadzenie
Niezależnie od tego, czy pracujesz z umowami, wewnętrznymi politykami, specyfikacjami technicznymi, czy materiałami marketingowymi, zasada jest taka sama: szybko gromadzisz kilka wersji .docx i w pewnym momencie musisz zobaczyć, co dokładnie się między nimi zmieniło. Wbudowane w Word okno Compare jest wystarczające przy okazjonalnym ręcznym sprawdzaniu, ale nie pomaga zbytnio, gdy porównywanie staje się częścią regularnego procesu lub musi być zautomatyzowane po stronie serwera.
GroupDocs.Comparison for .NET pozwala uruchomić to porównanie z kodu i uzyskać wynik w formacie preferowanym przez recenzentów. Biblioteka obsługuje dwa tryby wyjściowego porównania dla dokumentów Word:
- Tryb rewizji — różnice zapisywane są jako znacznik rewizji (śledzenie zmian) w Word. Recenzenci otwierają plik, widzą znajome kontrolki Review → Accept / Reject i przeglądają zmiany po jednej.
- Tryb podświetlenia — wstawiony, usunięty i zmodyfikowany tekst jest renderowany z kolorowymi podświetleniami bezpośrednio w treści dokumentu, tak że różnice są widoczne od razu podczas czytania finalnego tekstu.
W tym artykule przejdziemy przez oba podejścia przy użyciu działających przykładów w C#, przyjrzymy się klasie WordCompareOptions i jej właściwościom oraz omówimy, kiedy każdy tryb ma większy sens.
Wymagania wstępne
Zanim zaczniemy:
- .NET 6.0 lub nowszy.
- GroupDocs.Comparison for .NET — zainstaluj przez NuGet:
dotnet add package GroupDocs.Comparison
- Plik licencji (
GroupDocs.Comparison.lic). Bez niego biblioteka działa w trybie ewaluacyjnym z znakami wodnymi i ograniczeniami rozmiaru. Możesz poprosić o tymczasową licencję na potrzeby testów. - Dwa pliki Word do porównania — nazwijmy je
source.docxitarget.docx. Przykładowa zawartość:
source.docx |
target.docx |
|---|
Metoda 1: Porównanie z śledzeniem zmian (Revision‑Track)
Kiedy używać: recenzenci muszą zaakceptować lub odrzucić każdą zmianę indywidualnie w Microsoft Word, korzystając z wbudowanych narzędzi Review → Accept / Reject — np. podczas negocjacji umów lub cyklów akceptacji polityk.
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);
}
Wynikowy dokument w trybie rewizji (śledzenie zmian):
Co się dzieje pod maską:
ComparisonDisplayMode.Revisionsinstruuje silnik, aby wygenerował natywny znacznik śledzenia zmian w Word.DetectStyleChanges = truepowoduje, że porównanie wykrywa różnice formatowania (pogrubienie, rozmiar czcionki, kolor) oprócz edycji tekstu.- Plik wyjściowy otwiera się w Microsoft Word z gotwym panelem Review — każde wstawienie, usunięcie i zmiana stylu są wymienione i mogą być zaakceptowane lub odrzucone.
Ponieważ tryb rewizji nie wymaga ponownego renderowania treści dokumentu — po prostu dołącza metadane rewizji — zazwyczaj jest szybszy niż drugi tryb.
Metoda 2: Porównanie w trybie podświetlenia (Highlight‑Mode)
Kiedy używać: interesariusze chcą czystego dokumentu, który jasno pokazuje, co się zmieniło, ale nie muszą przeglądać każdej pojedynczej rewizji. Typowy scenariusz to menedżer, który otwiera najnowszą wersję w Word i szybko skanuje podświetlone wstawienia i usunięcia, aby zrozumieć wpływ aktualizacji.
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);
}
Wynikowy dokument w trybie podświetlenia:
Co się dzieje pod maską:
ComparisonDisplayMode.Highlightrenderuje różnice jako wbudowane podświetlenia koloru — czerwony dla usunięć, zielony dla wstawek, niebieski dla zmian stylu (domyślne kolory, które można dostosować poprzezWordCompareOptions/CompareOptionsoraz ich powiązaneStyleSettings).- Dokument jest gotowy do czytania lub drukowania bez dodatkowych kroków.
- Do pliku nie są dodawane metadane śledzenia zmian.
Tryb podświetlenia wymaga więcej pracy wewnętrznej, ponieważ musi modyfikować rzeczywistą treść dokumentu i stosować formatowanie. Przy dużych plikach możesz zauważyć znaczącą różnicę wydajności w porównaniu do trybu rewizji.
Badanie WordCompareOptions
Oba powyższe przykłady korzystają z WordCompareOptions — klasy, która dziedziczy wspólne ustawienia z CompareOptions i dodaje właściwości specyficzne dla dokumentów Word. Dzięki temu typowi kontrolujesz tryb wyświetlania (DisplayMode), czy śledzić zmiany formatowania (DetectStyleChanges), jaką nazwę autora umieścić przy rewizjach (RevisionAuthorName) oraz jak obsługiwać podziały linii, zakładki itp.
Na dodatek, baza CompareOptions udostępnia style dla wstawionych, usuniętych i zmienionych elementów (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle), dzięki czemu możesz precyzyjnie dostroić kolory i formatowanie podświetleń w razie potrzeby.
Oto mały przykład konfiguracji opcji dla czysto tekstowego sprawdzenia w trybie rewizji:
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
DetectStyleChanges = false,
RevisionAuthorName = "QA Bot",
CompareBookmarks = true
};
Pobieranie zmian programowo
Niezależnie od wybranego trybu wyjściowego (rewizje lub podświetlenia), zawsze możesz uzyskać ustrukturyzowaną listę wykrytych różnic za pomocą wspólnego API Comparer.GetChanges. Metoda działa zarówno dla Word, jak i wszystkich innych obsługiwanych formatów.
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
comparer.Compare("result_revision.docx");
var changes = comparer.GetChanges(); // returns ChangeInfo[]
}
Jest to przydatne, gdy musisz przetworzyć zmiany w własnym przepływie pracy — np. zbudować niestandardowy raport HTML, przekazać różnice do systemu recenzji lub zagregować statystyki dotyczące edycji. Zobacz oficjalną dokumentację API po więcej szczegółów: Comparer.GetChanges.
Praca z dokumentami zabezpieczonymi hasłem
Jeśli dokumenty są chronione hasłem, nadal można je porównywać: hasło przekazywane jest przez LoadOptions przy tworzeniu Comparer. Takie podejście działa identycznie dla Word, PDF i innych obsługiwanych formatów.
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);
}
Uzyskaj darmowy trial
GroupDocs.Comparison for .NET możesz pobrać ze strony z oficjalnymi wydaniami. Dla nieograniczonych testów poproś o tymczasową licencję — nie jest wymagana karta kredytowa.
Najczęściej zadawane pytania
P: Czy muszę mieć zainstalowany Microsoft Word lub Office na serwerze?
O: Nie. GroupDocs.Comparison to samodzielna biblioteka .NET; samodzielnie odczytuje i zapisuje pliki DOCX.
P: Czy mogę porównywać dokumenty w innych formatach niż Word?
O: Tak — biblioteka obsługuje PDF, arkusze Excel, prezentacje, pliki tekstowe i wiele innych. Pełna lista znajduje się w dokumentacji.
P: Co się stanie, jeśli nie ustawię licencji?
O: Biblioteka działa w trybie ewaluacyjnym. Dokumenty wyjściowe będą zawierały znak wodny i przetworzone zostaną jedynie pierwsze kilka stron. Tymczasowa licencja usuwa te ograniczenia na potrzeby testów.
P: Czy mogę dostosować kolory podświetleń?
O: Domyślne kolory wystarczają w większości przypadków. Do bardziej zaawansowanej kontroli stylu sprawdź właściwość StyleSettings w CompareOptions.
Zakończenie
GroupDocs.Comparison for .NET oferuje dwa przejrzyste sposoby na różnicowanie dokumentów Word z poziomu kodu. Tryb rewizji wpasowuje się bezpośrednio w istniejący proces przeglądu używany przez zespół; tryb podświetlenia dostarcza natychmiastowe podsumowanie wizualne dla osób, które po prostu chcą zobaczyć zmiany. Klasa WordCompareOptions pozwala dopasować wyjście — od wykrywania stylów i przypisywania autora po porównywanie zakładek i właściwości dokumentu.
Wybierz tryb odpowiadający Twojemu scenariuszowi, lub wygeneruj oba i pozwól każdej grupie odbiorców wybrać preferowany widok.