Giriş
İster sözleşmeler, iç politikalar, teknik özellikler ya da pazarlama metinleriyle çalışıyor olun, desen aynı: hızla birkaç .docx sürümü biriktiriyorsunuz ve bir noktada aralarındaki tam olarak neyin değiştiğini görmek istiyorsunuz. Word’ün yerleşik Compare iletişim kutusu ara sıra manuel bir kontrol için yeterli, ancak karşılaştırma düzenli bir sürecin parçası haline geldiğinde ya da sunucu tarafında otomatikleştirilmesi gerektiğinde pek yardımcı olmuyor.
GroupDocs.Comparison for .NET, bu karşılaştırmayı koddan çalıştırmanıza ve sonuçları inceleyenlerin tercih ettiği formatta üretmenize olanak tanır. Kütüphane, Word belgeleri için iki çıktı karşılaştırma modu destekler:
- Revision mode — farklar Word revizyon (track‑changes) işaretlemesi olarak yazılır. İnceleyenler dosyayı açar, tanıdık Review → Accept / Reject kontrollerini görür ve değişiklikleri tek tek işler.
- Highlight mode — eklenen, silinen ve değiştirilmiş metin, belge gövdesinde renkli vurgularla gösterilir, böylece farklar son metni okurken bir bakışta görülür.
Bu makalede her iki yaklaşımı çalışan C# örnekleriyle inceleyecek, WordCompareOptions sınıfını ve özelliklerini keşfedecek ve hangi modun ne zaman daha anlamlı olduğuna değineceğiz.
Önkoşullar
Başlamadan önce:
- .NET 6.0 veya üzeri.
- GroupDocs.Comparison for .NET — NuGet üzerinden kurun:
dotnet add package GroupDocs.Comparison
- Bir license file (
GroupDocs.Comparison.lic). Lisans dosyası olmadan kütüphane, filigranlar ve boyut sınırlamalarıyla değerlendirme modunda çalışır. Test için bir temporary license isteyebilirsiniz. - Karşılaştırılacak iki Word dosyası — bunlara
source.docxvetarget.docxdiyeceğiz. Örnek içerik:
source.docx |
target.docx |
|---|
Yöntem 1: Revision‑Track Karşılaştırması
When to use: inceleyenlerin Microsoft Word içinde yerleşik Review → Accept / Reject araçlarını kullanarak her değişikliği tek tek kabul veya reddetmesi gerektiğinde — örneğin sözleşme müzakereleri ya da politika onay döngüleri sırasında.
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);
}
Sonuç belge revision (track changes) mode içinde:
What happens under the hood:
ComparisonDisplayMode.Revisionsmotorun yerel Word track‑changes işaretlemesi üretmesini sağlar.DetectStyleChanges = truekarşılaştırmanın biçimlendirme farklarını (kalın, yazı tipi boyutu, renk) metin düzenlemeleriyle birlikte yakalamasını sağlar.- Çıktı dosyası Microsoft Word’de Review bölmesi hazır olarak açılır — her ekleme, silme ve stil değişikliği listelenir ve kabul ya da reddedilebilir.
Revision modu, belge içeriğini yeniden render etmesi gerekmediği için — sadece revizyon meta verisini ekler — iki moddan genellikle daha hızlıdır.
Yöntem 2: Highlight‑Mode Karşılaştırması
When to use: paydaşlar, neyin değiştiğini açıkça gösteren temiz bir belge ister ancak her bir revizyonu tek tek incelemekle ilgilenmezler. Tipik bir senaryo, yöneticinin en son sürümü Word’de açıp vurgulanan eklemeleri ve silmeleri hızlıca tarayarak güncellemenin etkisini anlamasıdır.
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);
}
Sonuç belge highlight mode içinde:
What happens under the hood:
ComparisonDisplayMode.Highlightfarkları satır içi renkli vurgular olarak render eder — silmeler için kırmızı, eklemeler için yeşil, stil değişiklikleri için mavi (varsayılan renkler,WordCompareOptions/CompareOptionsve ilgiliStyleSettingsüzerinden ayarlanabilir).- Belge, ekstra bir adım gerektirmeden okunmaya ya da yazdırılmaya hazırdır.
- Dosyaya track‑changes meta verisi eklenmez.
Highlight mode, gerçek belge içeriğini değiştirmesi ve biçimlendirme uygulaması gerektiği için dahili olarak daha fazla iş yapar. Büyük dosyalarda revision moduna kıyasla belirgin bir performans farkı görebilirsiniz.
WordCompareOptions Keşfi
Yukarıdaki iki örnek de WordCompareOptions kullanıyor — bu sınıf, ortak ayarları CompareOptions‘dan devralır ve Word belgelerine özgü özellikler ekler. Bu tip üzerinden görüntüleme modunu (DisplayMode), stil değişikliklerini izleyip izlemeyeceğini (DetectStyleChanges), revizyonlarda hangi yazar adının görüneceğini (RevisionAuthorName) ve satır sonları, yer imleri vb. nasıl ele alınacağını kontrol edersiniz.
Bunun üzerine, temel CompareOptions eklenmiş, silinmiş ve değiştirilmiş öğeler için stiller (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle) sunar; böylece gerektiğinde vurguların renk ve biçimini ince ayar yapabilirsiniz.
Revision modunda yalnızca metin kontrolü için seçenekleri yapılandırmaya dair küçük bir örnek:
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
DetectStyleChanges = false,
RevisionAuthorName = "QA Bot",
CompareBookmarks = true
};
Değişiklikleri Programlı Olarak Almak
Hangi çıktı modunu seçerseniz seçin (revizyonlar ya da vurgulama), Comparer.GetChanges API’si aracılığıyla tespit edilen farkların yapılandırılmış bir listesini her zaman alabilirsiniz. Bu yöntem Word ve diğer desteklenen formatlar için çalışır.
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
comparer.Compare("result_revision.docx");
var changes = comparer.GetChanges(); // returns ChangeInfo[]
}
Bu, kendi iş akışınızda değişiklikleri sonradan işlemek istediğinizde faydalıdır — örneğin özel bir HTML raporu oluşturmak, farkları bir inceleme sistemine beslemek ya da düzenlemeler hakkında istatistik toplamak. Daha fazla ayrıntı için resmi API referansına bakın: Comparer.GetChanges.
Şifre‑Korunan Belgelerle Çalışma
Belgeler bir şifreyle korunmuşsa, yine de karşılaştırılabilir: şifre, Comparer oluşturulurken LoadOptions aracılığıyla geçirilir. Bu yaklaşım Word, PDF ve diğer desteklenen formatlar için aynı şekilde çalışır.
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);
}
Ücretsiz Deneme Alın
GroupDocs.Comparison for .NET’i official releases page adresinden indirebilirsiniz. Sınırsız test için bir temporary license isteyin — kredi kartı gerekmez.
Sıkça Sorulan Sorular
S: Sunucuda Microsoft Word ya da Office yüklü olması gerekiyor mu?
C: Hayır. GroupDocs.Comparison bağımsız bir .NET kütüphanesidir; DOCX dosyalarını kendi başına okur ve yazar.
S: Word dışındaki formatlarda da belge karşılaştırabilir miyim?
C: Evet — kütüphane PDF, Excel elektronik tabloları, sunumlar, düz metin dosyaları ve daha birçok formatı destekler. Tam liste documentation içinde bulunur.
S: Lisans ayarlamazsam ne olur?
C: Kütüphane değerlendirme modunda çalışır. Çıktı belgelerinde bir filigran bulunur ve yalnızca ilk birkaç sayfa işlenir. Bir temporary license bu kısıtlamaları test için kaldırır.
S: Vurgulama renklerini özelleştirebilir miyim?
C: Varsayılan renkler çoğu kullanım senaryosu için yeterlidir. Daha gelişmiş stil kontrolü için CompareOptions üzerindeki StyleSettings özelliğine bakın.
Sonuç
GroupDocs.Comparison for .NET, koddan Word belgelerini karşılaştırmak için iki temiz yol sunar. Revision modu, ekibinizin zaten kullandığı inceleme iş akışına doğrudan bağlanır; highlight modu, sadece değişiklikleri görmek isteyen kişiler için anlık görsel bir özet sağlar. WordCompareOptions sınıfı, stil algılamadan yazar atamasına, yer imi ve belge‑özelliği karşılaştırmasına kadar çıktıyı ince ayar yapmanıza imkan tanır.
Senaryonuza uyan modu seçin, ya da her iki modu da üretip izleyicilerin tercih ettiği görünümü seçmelerine izin verin.