Giriş
PDF, sözleşmeler, teknik şartnameler, raporlar ve düzenleyici dosyalar için de‑facto standarttır — ve dolaşımda birden çok sürüm bulunduğunda, iki dosya arasındaki tam olarak neyin değiştiğini izlemek çabuk sıkıcı hâle gelir. Belgeleri yan yana kaydırıp farkları elle not almak ölçeklenemez ve Adobe Acrobat’ın Compare özelliği gibi amaca yönelik araçlar bile her dosya çifti için manuel müdahale gerektirir.
GroupDocs.Comparison for .NET, PDF karşılaştırmasını tamamen kod üzerinden çalıştırmanıza ve sonucun nasıl sunulacağını tam olarak seçmenize olanak tanır. Version 26.4, üç çıktı görüntüleme moduna sahip özel bir PdfCompareOptions sınıfı getirdi:
- Inline (varsayılan) — aynı sayfalarda farklı renklerle vurgulanan silinmeler ve eklemelerle tek bir birleştirilmiş PDF. Bu klasik davranıştır ve bağımsız bir dosya olarak paylaşması en kolay sonuçtur.
- Side‑by‑Side — her sonuç sayfası, kaynak ve hedef sayfaları yan yana gösterir, içerik çakışması yoktur. Belgeler büyük ölçüde farklıysa ve bir sayfada içerik karışması kafa karıştırıcı olursa idealdir.
- Interleaved — sonuç, alternatif sayfalardan oluşur: tek sayfalar kaynak (silinmeler vurgulanmış), çift sayfalar hedef (eklemeler vurgulanmış). Değişiklikler, değişiklik türü ve yazar adı gibi meta verileri taşıyan yerel PDF ek açıklama nesneleri olarak temsil edilir. Çoğu PDF görüntüleyici (Adobe Acrobat Reader, Foxit vb.) ek açıklama panelini açıp bireysel ek açıklamaları kabul ya da silmeye izin verir; böylece ekstra bir yazılım gerektirmeyen hafif bir inceleme akışı sağlanır. Bu dosyayı “Two Page View” (İki Sayfa Görünümü) PDF okuyucusunda açmak doğal bir sol/sağ karşılaştırma üretir.
Bu makalede, çalışan C# örnekleriyle üç modu da inceleyecek, PdfCompareOptions ve özelliklerini keşfedecek ve aynı görevin Adobe Acrobat’ta manuel olarak nasıl yapılacağını kısaca ele alacağız.
PDF’leri Adobe Acrobat’ta Karşılaştırma
Programatik yaklaşıma geçmeden önce, Adobe Acrobat Pro’nun kutudan çıktığı haliyle neler sunduğunu bilmek faydalıdır. Acrobat’ın yerleşik Compare Files aracı (Tools → Compare Files altında bulunur) metin değişikliklerini, görüntü farklarını ve biçimlendirme kaymalarını vurgulayan yan‑yan rapor üretir.
Acrobat Pro’da bir karşılaştırma çalıştırmak için:
- Acrobat Pro’yu açın ve Tools → Compare Files seçeneğini seçin.
- Older File (kaynak) ve Newer File (hedef) dosyalarını seçin.
- Compare düğmesine tıklayın. Acrobat, özet sayfası ve satır içi değişiklik işaretçileri içeren etkileşimli bir karşılaştırma raporu oluşturur.
Bu, ara sıra yapılan manuel incelemeler için iyidir. Ancak, karşılaştırmanın otomatik bir akışın parçası olması gerektiğinde Acrobat’ın karşılaştırma aracının önemli sınırlamaları vardır.
Karşılaştırmanın bir sunucuda, CI/CD boru hattında ya da özel bir inceleme iş akışının parçası olarak gerçekleşmesi gerektiğinde, kod‑ilk kütüphane doğru araçtır.
Önkoşullar
Başlamadan önce:
- .NET 6.0 veya üzeri.
- GroupDocs.Comparison for .NET 26.4 veya üzeri — NuGet üzerinden kurun:
dotnet add package GroupDocs.Comparison
- Bir lisans dosyası (
GroupDocs.Comparison.lic). Lisans olmadan kütüphane, filigran ve sayfa sayısı sınırlamalarıyla değerlendirme modunda çalışır. Test için bir temporary license isteyebilirsiniz. - Karşılaştırılacak iki PDF dosyası — bunlara
source.pdfvetarget.pdfdiyeceğiz. Örnek içerik:
source.pdf |
target.pdf |
|---|
Mod 1: Satır İçi Karşılaştırma (Varsayılan)
Ne zaman kullanılmalı: Herkesin açıp hemen ne değiştiğini görebileceği tek bir, kendine yeter PDF dosyası istiyorsanız — özel bir görüntüleyici ya da iki sayfalı düzen gerektirmeden. Tipik bir senaryo, karşı tarafa kırmızı çizgili bir sözleşme taslağı paylaşmaktır.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Inline
};
comparer.Compare("result_inline.pdf", options);
}
Not:
Inline,DisplayMode‘un varsayılan değeridir; bu yüzden yukarıdakioptionsbloğu isteğe bağlıdır. Basit bircomparer.Compare("result_inline.pdf")çağrısı aynı çıktıyı üretir.
Inline modunda oluşturulan belge:
Arka planda neler oluyor:
- Kaynak belgeden silinen içerik bir renkle (varsayılan kırmızı) vurgulanır.
- Hedef belgeden eklenen içerik başka bir renkle (varsayılan yeşil) vurgulanır.
- Her iki değişiklik seti aynı sayfalarda bir arada bulunur; bu yüzden sonuç kompakt olur ancak belgeler çok farklıysa kalabalık görünebilir. Önemli metin düzenlemelerinde, silinen ve eklenen içerik sayfa üzerinde fiziksel olarak üst üste binebilir — örneğin, değiştirilmiş bir paragraf orijinalin üzerine yerleşir ve okunamaz bir karışıklık oluşturur. Bu gibi durumlarda
SideBySideya daInterleavedmodu daha uygundur.
Mod 2: Yan Yana Karşılaştırma
Ne zaman kullanılmalı: İki belge büyük ölçüde farklı ve silinme‑ekleme işaretlerini aynı sayfada göstermek sonucu okunamaz hâle getiriyorsa. Yan Yana, kaynak ve hedef içeriği kesin olarak ayırır, böylece her sayfayı bir bakışta taramak kolaylaşır.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide
};
comparer.Compare("result_side_by_side.pdf", options);
}
Side‑by‑Side modunda oluşturulan belge:
Arka planda neler oluyor:
- Her sonuç sayfası, iki yarıya bölünmüş geniş bir tuval gibidir.
- Sol yarı, silinmeler vurgulanmış ilgili kaynak sayfasını gösterir.
- Sağ yarı, eklemeler vurgulanmış hedef sayfayı gösterir.
- İki belgenin içeriği asla çakışmaz; bu yüzden yoğun düzenlemeler bile okunabilir kalır.
Mod 3: Aralıklı Karşılaştırma
Ne zaman kullanılmalı: Standart bir PDF okuyucusunda Two Page View (veya “Facing Pages”) modunu kullanarak değişiklikleri sayfa sayfa incelemek istiyorsanız. Her kaynak sayfa solda, karşılık gelen hedef sayfa sağda yer alır — fiziksel sayfa düzeni, Side‑by‑Side’ın tek bir tuvaldeki görünümünü taklit eder, ancak her sayfa tam boyutta kalır.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Interleaved,
AnnotationAuthorName = "GroupDocs"
};
comparer.Compare("result_interleaved.pdf", options);
}
Interleaved modunda oluşturulan belge (Two Page View’da gösterildi):
Arka planda neler oluyor:
- Sonuç belgesi,
N‑sayfalı bir kaynak/hedef çifti için2 × Nsayfa içerir. - Tek sayfalar (1, 3, 5 …) silinmeler vurgulanmış kaynak sayfalardır.
- Çift sayfalar (2, 4, 6 …) eklemeler vurgulanmış hedef sayfalardır.
AnnotationAuthorName, karşılaştırma sırasında üretilen PDF ek açıklamalarına yazar adını damgalar — sonuç birden fazla yazarın yorumlarını ayırt etmesi gereken bir inceleme iş akışına besleniyorsa faydalıdır.
İpucu: Sonucu Adobe Acrobat Reader ya da View → Page Display → Two Page View destekleyen herhangi bir görüntüleyicide açın; böylece istenen sol/sağ düzen otomatik olarak oluşur.
Karşılaştırmayı Sayfa Aralığıyla Sınırlama
Üç modun tamamı, PagesSetup özelliği aracılığıyla sayfa‑aralığı filtresini destekler. Bu, büyük bir belgenin yalnızca belirli bir bölümü değişmişse geri kalanını atlamak istediğinizde kullanışlıdır.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide,
PagesSetup = new PagesSetup
{
StartPage = 3,
EndPage = 10
}
};
comparer.Compare("result_pages_3_to_10.pdf", options);
}
PagesSetup null (veya ayarlanmamış) olduğunda tüm sayfalar karşılaştırılır — önceki sürümlerdeki aynı davranış.
PdfCompareOptions Keşfi
PdfCompareOptions, CompareOptions sınıfının PDF‑özel bir alt sınıfıdır; WordCompareOptions (version 26.2) gibi aynı kalıba sahiptir. PDF‑özel tüm ayarları tek bir yerde toplar, böylece bir PDF işine yanlışlıkla Word ya da elektronik tabloya özgü seçenekler uygulamazsınız.
| Property | Type | Description |
|---|---|---|
DisplayMode |
ComparisonDisplayMode |
Sonuç düzenini kontrol eder: Inline (varsayılan), SideBySide veya Interleaved. |
PagesSetup |
PagesSetup |
Karşılaştırılacak sayfa aralığı. null ise tüm sayfalar işlenir. |
CompareImagesPdf |
bool |
Gömülü görüntülerin karşılaştırmaya dahil edilip edilmeyeceği. |
AnnotationAuthorName |
string |
PDF ek açıklamalarına damgalanan yazar adı (Interleaved modunda kullanılır). |
ImagesInheritanceMode |
enum | Görüntü karşılaştırması devre dışı bırakıldığında hangi belgenin görüntü sağlayacağını belirler. |
Tamamen yapılandırılmış bir örnek:
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.Interleaved,
CompareImagesPdf = true,
AnnotationAuthorName = "Review Bot",
PagesSetup = new PagesSetup { StartPage = 1, EndPage = 5 }
};
CompareOptions temel sınıfından miras alınan InsertedItemStyle, DeletedItemStyle, ChangedItemStyle gibi özellikler de mevcuttur; böylece gerektiğinde varsayılan vurgulama renklerini geçersiz kılabilirsiniz.
Değişiklikleri Programlı Olarak Almak
Görüntüleme modundan bağımsız olarak, Comparer.GetChanges() ile tespit edilen tüm farkların yapılandırılmış bir listesini alabilirsiniz. Bu, özel raporlar oluşturmak, sonuçları bir inceleme sistemine beslemek ya da düzenleme kapsamı hakkında istatistik toplamak için faydalıdır.
using (var comparer = new Comparer("source.pdf"))
{
comparer.Add("target.pdf");
comparer.Compare("result.pdf");
var changes = comparer.GetChanges(); // returns ChangeInfo[]
Console.WriteLine($"Total changes detected: {changes.Length}");
}
Ayrıntılar için resmi API referansına bakın: Comparer.GetChanges.
Şifre Koruması Olan PDF’lerle Çalışma
Şifre korumalı PDF’ler tam olarak desteklenir. Comparer oluştururken şifreyi LoadOptions içinde geçin:
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source_protected.pdf",
new LoadOptions { Password = "secret" }))
{
comparer.Add("target_protected.pdf", new LoadOptions { Password = "secret" });
var options = new PdfCompareOptions
{
DisplayMode = PdfCompareOptions.ComparisonDisplayMode.SideBySide
};
comparer.Compare("result_protected.pdf", options);
}
Ücretsiz Deneme Alın
GroupDocs.Comparison for .NET’i official releases page üzerinden indirebilirsiniz. Sınırsız test için bir temporary license isteyin — kredi kartı gerekmez.
Sıkça Sorulan Sorular
S: Sunucuda Adobe Acrobat ya da başka bir PDF yazılımı kurulu olması gerekiyor mu?
C: Hayır. GroupDocs.Comparison, üçüncü‑taraf bağımlılıkları olmadan PDF dosyalarını okuyan ve yazan bağımsız bir .NET kütüphanesidir.
S: Varsayılan olarak hangi görüntüleme modunu kullanmalıyım?
C: Öncelikle Inline ile başlayın — en kompakt sonucu verir ve paylaşması en kolaydır. Yoğun düzenlemeler inline görünümü zorlaştırıyorsa SideBySide‘a, incelemeyi “Two Page View” PDF okuyucusunda yapacaksanız Interleaved‘e geçin.
S: PDF dışındaki formatları da karşılaştırabilir miyim?
C: Evet — kütüphane Word belgeleri, Excel elektronik tabloları, PowerPoint sunumları, düz metin dosyaları ve daha fazlasını destekler. Tam liste documentation içinde yer alır.
S: Lisans ayarlamazsam ne olur?
C: Kütüphane değerlendirme modunda çalışır. Çıktı belgelerinde filigran bulunur ve yalnızca ilk birkaç sayfa işlenir. Test için bir temporary license bu kısıtlamaları kaldırır.
S: Sadece PDF içindeki görüntüleri karşılaştırıp metin değişikliklerini yok sayabilir miyim?
C: PdfCompareOptions üzerinde CompareImagesPdf = true ayarıyla görüntü karşılaştırmasını etkinleştirin. Sadece görüntülere odaklanmak isterseniz bu ayarı ImagesInheritanceMode özelliğiyle birleştirebilirsiniz; detaylar API referansında açıklanmıştır.
Sonuç
GroupDocs.Comparison for .NET 26.4, PDF karşılaştırma sonuçlarının nasıl sunulacağı üzerinde kesin, kod‑temelli kontrol sağlar. Inline modu en yaygın kullanım senaryosunu karşılar — tek bir, paylaşılabilir kırmızı‑çizgili PDF. SideBySide ağır değişikliklerde içeriği temiz ve okunabilir tutar. Interleaved ise herhangi bir PDF görüntüleyicinin Two Page View özelliğiyle tam‑boyutlu sayfa‑sayfa inceleme imkanı verir. Üstelik sayfa‑aralığı filtresi, sadece önemli bölümleri hedeflemenizi sağlar ve PdfCompareOptions tüm PDF‑özel ayarları tek bir keşfedilebilir sınıfta toplar.
İş akışınıza en uygun modu seçin, ya da üçünü de üretip izleyicilerin tercih ettiği görünümü seçmelerine izin verin.