Belge karşılaştırma C# öğreticisi – birden fazla Word belgesini programlı olarak karşılaştırma
Birden fazla Word belgesini hızlı ve doğru bir şekilde karşılaştırmanız gerekiyorsa, bu öğretici GroupDocs.Comparison for .NET ile bunu tam olarak nasıl yapacağınızı gösterir. Sözleşmeleri inceliyor, revizyonları izliyor veya birden fazla yazarın taslaklarını birleştiriyor olsanız, karşılaştırmanın otomatikleştirilmesi manuel satır‑satır kontrolleri ortadan kaldırır, insan hatasını azaltır ve her ekleme, silme ve değişikliği vurgulayan tek bir şık rapor üretir.
Bu rehberde şunları öğreneceksiniz:
- Akışlardan Word dosyalarını yükleme (veritabanında depolanan veya bulut dosyaları için ideal)
- Yeni bir C# projesinde GroupDocs.Comparison kurma
- Eklenen, silinen ve değiştirilen metnin görsel stilini özelleştirme
- Tek bir geçişte herhangi bir sayıda hedef belgeyi karşılaştırma
- Yaygın sorunları giderme ve büyük dosyalar için performansı ayarlama
- Otomatik karşılaştırmanın saatlerce manuel işi tasarruf sağladığı gerçek dünya senaryoları
Hızlı cevaplar
- Hangi kütüphaneyi kullanmalıyım? GroupDocs.Comparison for .NET.
- Aynı anda birden fazla Word belgesini karşılaştırabilir miyim? Evet – ihtiyacınız kadar hedef akış ekleyin.
- Word’de farkları nasıl vurgularım? Özel
StyleSettingsileCompareOptionsyapılandırın. - Geliştirme için lisansa ihtiyacım var mı? Öğrenme için ücretsiz deneme çalışır; geçici bir lisans filigranları kaldırır.
- Async desteği mevcut mu? Evet – karşılaştırmayı
Task.Runiçinde sararak bloklamayan yürütme sağlayabilirsiniz.
Neden birden fazla Word belgesini karşılaştırmalıyız?
Tüm sürümler arasındaki tüm değişikliklerin tek bir birleşik görünümünü elde edebilirsiniz, ayrı yan‑yana raporlarla uğraşmak yerine. Bu, aynı sözleşmeyi birden fazla inceleyen kişi olduğunda, birkaç teklif taslağını denetlemeniz gerektiğinde veya her değişikliği kaydeden bir ana belge oluşturmak istediğinizde kritik öneme sahiptir. Farkları tek bir çıktıya birleştirerek, paydaşlar birden fazla dosya açmadan eklenen, kaldırılan veya değiştirilenleri anında görebilir.
Word belgelerinde farkları nasıl vurgularım
Kaynak dosyayı yükleyin, her hedefi ekleyin ve ardından InsertedItemStyle, DeletedItemStyle ve ModifiedItemStyle belirten CompareOptions uygulayın. Sonuç, eklemelerin sarı, silmelerin kırmızı üstü çizili ve değişikliklerin mavi altı çizili göründüğü, kuruluşunuzun marka yönergelerine uygun bir Word dosyasıdır.
Doğrudan cevap
GroupDocs.Comparison, CompareOptions aracılığıyla görsel stiller ayarlamanıza izin verir—eklenen, silinen ve değiştirilmiş içerik için renkleri, yazı tiplerini ve vurgulama türlerini tanımlarsınız, ardından motor bu stilleri doğrudan çıktı Word belgesine işler. Bu tek yapılandırma adımı, farkları inceleyenler için açıkça ayırt edilebilir kılar.
Önkoşullar
- GroupDocs.Comparison kütüphanesi (v25.4.0 veya daha yeni) – .NET Framework 4.6.1+, .NET Core 2.0+, .NET 5/6/7 ile uyumlu.
- Visual Studio (herhangi bir yeni sürüm) veya benzer bir C# IDE.
- C# konsol uygulamalarıyla temel aşinalık.
- Deneyimlemek için bir veya daha fazla örnek
.docxdosyası.
GroupDocs.Comparison’ı kurup çalıştırma
Kütüphaneyi kurma (kolay yol)
Seçenek 1: Package Manager Console
Install-Package GroupDocs.Comparison -Version 25.4.0
Seçenek 2: .NET CLI (benim kişisel favorim)
dotnet add package GroupDocs.Comparison --version 25.4.0
Lisanslama basitleştirildi
- Ücretsiz deneme: Küçük bir filigranla tam işlevsellik—öğrenme için mükemmel.
- Geçici lisans: Demolar için filigranları kaldırır; GroupDocs’tan ücretsiz bir anahtar isteyin.
- Üretim lisansı: Tam lisansı GroupDocs Purchase adresinden satın alın.
İlk karşılaştırmanız (hello‑world stili)
Comparer, belge yükleme, karşılaştırma ve sonuç üretimini yöneten GroupDocs.Comparison’ın temel sınıfıdır.
Bu snippet bir Comparer nesnesi oluşturur, bir kaynak belge yükler ve tek bir hedef belge ekler. Bunu bir “öncesi ve sonrası” karşılaştırması kurmak olarak düşünün.
using System;
using GroupDocs.Comparison;
namespace DocumentComparisonApp
{
class Program
{
static void Main(string[] args)
{
// Initialize comparer with a source document stream
using (Comparer comparer = new Comparer(File.OpenRead("SOURCE_WORD.docx")))
{
// Add target documents to compare
comparer.Add("TARGET_WORD.docx");
Console.WriteLine("Documents added for comparison.");
}
}
}
}
Tam uygulama – adım adım
Adım 1: temeli kurma
Comparer, dosya yolu yerine bir akış ile örneklenir, bu da veritabanlarında depolanan veya ağ üzerinden alınan belgelerle çalışmanız için esneklik sağlar.
string documentDirectory = "YOUR_DOCUMENT_DIRECTORY";
using (Comparer comparer = new Comparer(File.OpenRead(System.IO.Path.Combine(documentDirectory, "SOURCE_WORD.docx"))))
{
// We'll build on this foundation
}
Adım 2: birden fazla hedef belge ekleme
Artık tek bir çalıştırmada birden fazla Word belgesini karşılaştırabilirsiniz. GroupDocs.Comparison, tüm farkları akıllıca tek bir sonuç dosyasında birleştirir.
comparer.Add(File.OpenRead(System.IO.Path.Combine(documentDirectory, "TARGET_WORD.docx")));
comparer.Add(File.OpenRead(System.IO.Path.Combine(documentDirectory, "TARGET2_WORD.docx")));
comparer.Add(File.OpenRead(System.IO.Path.Combine(documentDirectory, "TARGET3_WORD.docx")));
Adım 3: farkları öne çıkarma (özel stil)
CompareOptions, eklenen, silinen ve değiştirilmiş içerik için karşılaştırma davranışı ve görsel stil belirlemenizi sağlar.StyleSettings, çıktı belgesindeki farklara uygulanan görsel görünümü (renk, yazı tipi, vurgulama) tanımlar.
CompareOptions compareOptions = new CompareOptions()
{
InsertedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Yellow // Highlight inserted text in yellow
}
};
Adım 4: karşılaştırmayı yürütme ve sonuçları kaydetme
Aşağıdaki tek satır, tüm hedefler arasında karşılaştırmayı gerçekleştirir ve şık bir sonuç belgesi yazar. File.Create() kullandığımız için akışı bir veritabanı veya bulut depolama hedefiyle değiştirebilirsiniz.
string outputDirectory = "YOUR_OUTPUT_DIRECTORY";
string outputFileName = System.IO.Path.Combine(outputDirectory, "RESULT_WORD.docx");
comparer.Compare(File.Create(outputFileName), compareOptions);
Yaygın sorunlar ve çözümleri
Sorun: “Dosya bulunamadı” hataları
File.OpenRead (veya eşdeğeri) ile gönderdiğiniz dosya yollarının gerçekten mevcut ve çalışan süreçten erişilebilir olduğundan emin olun.
string sourcePath = System.IO.Path.Combine(documentDirectory, "SOURCE_WORD.docx");
if (!File.Exists(sourcePath))
{
throw new FileNotFoundException($"Source document not found: {sourcePath}");
}
Sorun: büyük belgelerde bellek sorunları
using ifadeleriyle akışları hemen serbest bırakın. GroupDocs.Comparison belgeleri parçalar halinde işler, bu yüzden akışları gereksiz yere açık tutmak bellek kullanımını artırabilir.
// Don't do this - keeps all streams in memory
// comparer.Add(File.OpenRead(doc1));
// comparer.Add(File.OpenRead(doc2));
// Do this instead - process one at a time
using (var stream1 = File.OpenRead(doc1))
{
comparer.Add(stream1);
// Stream is disposed automatically here
}
Sorun: beklenmeyen karşılaştırma sonuçları
CompareOptions içindeki hassasiyet ayarlarını, incelemenizle ilgili olmayan başlık/altbilgi değişiklikleri, sayfa numaraları veya meta verileri yok sayacak şekilde ayarlayın.
CompareOptions options = new CompareOptions()
{
CompareBookmarks = false, // Ignore bookmark differences
CompareComments = false, // Ignore comment differences
CompareFields = false // Ignore field differences
};
Web uygulamaları için asenkron karşılaştırma
Karşılaştırma çağrısını Task.Run içinde sararak UI iş parçacıklarının yanıt vermesini sağlayın ve ASP.NET istek hatlarını engellemekten kaçının.
public async Task<string> CompareDocumentsAsync(Stream source, Stream[] targets)
{
using (var comparer = new Comparer(source))
{
foreach (var target in targets)
{
comparer.Add(target);
}
// Perform comparison on background thread
return await Task.Run(() =>
{
var output = new MemoryStream();
comparer.Compare(output, compareOptions);
return Convert.ToBase64String(output.ToArray());
});
}
}
Performans optimizasyon ipuçları
- Akışları kullanımdan hemen sonra serbest bırakın (
usingblokları). - Belgeleri sıralı işleyin mümkün olduğunda; paralel işleme bellek baskısını artırabilir.
- Web API’leri için async desenlerini kullanın ölçeklenebilirliği artırmak için.
- Büyük toplu işleri arka plan çalışanı ile kuyruğa alın, web sunucusunun kısıtlamasını önlemek için.
- Güncel kalın: GroupDocs.Comparison düzenli performans iyileştirmeleri alır—CPU ve bellek ayak izlerini azaltmak için en son sürüme yükseltin.
Sıkça sorulan sorular
S: GroupDocs.Comparison farklı belge formatlarını nasıl ele alır?
C: 30+ giriş ve çıkış formatını destekler—DOCX, PDF, PPTX, XLSX ve HTML dahil—ve dosyaları tüm içeriği belleğe yüklemeden 500 MB’a kadar karşılaştırabilir.
S: Farklı düzen veya yapıya sahip belgeleri karşılaştırabilir miyim?
C: Evet. Motor içeriği anlamsal olarak karşılaştırır, bu yüzden yapısal değişiklikler sorunsuz şekilde işlenir.
S: Belgeler şifre korumalıysa ne olur?
C: Akışı açarken şifreyi sağlayın; kütüphane karşılaştırma için dosyayı çözer.
S: Aynı anda kaç belgeyi karşılaştırabileceğim konusunda bir sınırlama var mı?
C: Pratik sınırlama sistem belleğidir; tipik bir geliştirme makinesinde 5‑10 büyük belgeyi karşılaştırmak iyi çalışır.
S: Bunu bir CI/CD hattına nasıl entegre edebilirim?
C: Karşılaştırma mantığını bir konsol uygulaması veya web API’si içinde sarın, ardından yapı betiklerinizden çağırarak belge değişikliklerini otomatik olarak tespit edin.
S: Kütüphane çok dilli belgeleri destekliyor mu?
C: Kesinlikle. Arapça ve İbranice gibi sağ‑dan‑sol dilleri ve tam Unicode karakter setlerini işler.
Daha derin öğrenme için ek kaynaklar
- Dokümantasyon – kapsamlı API referansı ve ileri düzey öğreticiler
- API referansı – detaylı metod ve özellik dokümanları
- İndirme merkezi – en son sürümler ve değişiklik günlüğü
- Topluluk forumları – diğer geliştiricilerle bağlantı kurun ve GroupDocs uzmanlarından yardım alın
Son güncelleme: 2026-10-05
Test edildiği sürüm: GroupDocs.Comparison 25.4.0 for .NET
Yazar: GroupDocs