IRONSOFTWAREHOME
IRONPDF KULLANARAK

IronPDF Kullanarak .NET PDF API Nasıl Oluşturulur

Curtis Chau
Curtis Chau
Updated: 28 Haziran 2026

Değişiklikleri izlemek, farklı sürümleri doğrulamak ve kalite güvence iş akışlarını otomatikleştirmek için PDF belgelerini programlı olarak karşılaştırmak esastır. İki PDF dosyasını belge yönetimi için veya sözleşme revizyonlarındaki farklılıkları bulmak için karşılaştırmanız gerektiğinde, IronPDF, C#'da PDF dosyalarını karşılaştırmak için uygun hale getirilmiş bir çözüm sunar.

Bu eğitim, temel karşılaştırmalardan ayrıntılı fark raporları oluşturmaya kadar IronPDF'in metin çıkartma yeteneklerini kullanarak iki PDF belgesini karşılaştırma yöntemini gösterir. Windows, Linux, macOS, Docker ve bulut platformlarında çalışan kod örnekleriyle pratik teknikler öğreneceksiniz.

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 1 - IronPDF

Ön Koşullar ve Kurulum

Başlamadan önce, kurulu olduğundan emin olun:

  • Visual Studio 2019 veya sonraki sürüm
  • .NET Framework 4.6.2+ veya .NET Core 3.1+
  • Temel C# bilgisi

IronPDF .NET Paketini Yükleme

.NET projenizde IronPDF'i NuGet Paket Yöneticisi üzerinden yükleyin:

PM > Install-Package IronPdf

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 2 - Kurulum

.NET CLI kullanarak:

dotnet add package IronPdf

Dosyalarınıza gerekli ad alanı referansını ekleyin:

using IronPdf;
using System;

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 3 - Özellikler

Temel PDF Belge Karşılaştırması

PDF dosyalarını metin içeriklerini çıkartarak ve karşılaştırarak karşılaştırmak için örnek kodla başlayalım:

public class BasicPdfComparer
{
    public static bool ComparePdfFiles(string firstPdfPath, string secondPdfPath)
    {
        // Load two PDF documents
        var pdf1 = PdfDocument.FromFile(firstPdfPath);
        var pdf2 = PdfDocument.FromFile(secondPdfPath);
        // Extract all text from both PDFs
        string text1 = pdf1.ExtractAllText();
        string text2 = pdf2.ExtractAllText();
        // Compare the two documents
        bool areIdentical = text1 == text2;
        // Find differences and calculate similarity
        double similarity = CalculateSimilarity(text1, text2);
        Console.WriteLine($"Documents are {(areIdentical ? "identical" : "different")}");
        Console.WriteLine($"Similarity: {similarity:F2}%");
        return areIdentical;
    }
    private static double CalculateSimilarity(string text1, string text2)
    {
        if (text1 == text2) return 100.0;
        if (string.IsNullOrEmpty(text1) || string.IsNullOrEmpty(text2)) return 0.0;
        int matchingChars = 0;
        int minLength = Math.Min(text1.Length, text2.Length);
        for (int i = 0; i < minLength; i++)
        {
            if (text1[i] == text2[i]) matchingChars++;
        }
        return (double)matchingChars / Math.Max(text1.Length, text2.Length) * 100;
    }
}

Bu kod, IronPDF'nin PdfDocument.FromFile() yöntemi kullanılarak iki PDF dosyasını yükler, tüm metin içeriğini çıkarır ve doğrudan bir metin karşılaştırması yapar. Karşılaştırma yöntemi, belgelerin ne kadar yakın eşleştiğini belirlemek için metrikler sunar.

Giriş

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 4 - Örnek PDF Girişi 1

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 5 - Örnek PDF Girişi 2

Çıktı

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 6 - Konsol Çıktısı

Sayfa-Sayfa Karşılaştırma Yöntemi

Daha detaylı analiz için, farklılıkların tam olarak nerede meydana geldiğini belirlemek için iki PDF'yi sayfa bazında karşılaştırın:

public static void ComparePageByPage(string firstPdfPath, string secondPdfPath)
{
    // Load two files
    var pdf1 = PdfDocument.FromFile(firstPdfPath);
    var pdf2 = PdfDocument.FromFile(secondPdfPath);
    int maxPages = Math.Max(pdf1.PageCount, pdf2.PageCount);
    int differencesFound = 0;
    for (int i = 0; i < maxPages; i++)
    {
        // Process each page
        string page1Text = i < pdf1.PageCount ? pdf1.ExtractTextFromPage(i) : "";
        string page2Text = i < pdf2.PageCount ? pdf2.ExtractTextFromPage(i) : "";
        if (page1Text != page2Text)
        {
            differencesFound++;
            Console.WriteLine($"Page {i + 1}: Differences detected");
        }
        else
        {
            Console.WriteLine($"Page {i + 1}: Identical");
        }
    }
    Console.WriteLine($"\nSummary: {differencesFound} page(s) with changes");
}

ExtractTextFromPage() yöntemi belirli sayfalardan hedefli içerik çıkarımına olanak tanır. Bu yaklaşım, geliştiricilere PDF belgelerinin farklı sürümleri arasındaki tutarsızlıkları belirleme konusunda yardımcı olur.

Comparer Sınıfı Deseni Kullanma

Karşılaştırma işlevselliğinizi geliştirmek için özel bir karşılaştırıcı sınıf oluşturun:

public class PdfComparer
{
    private PdfDocument pdf1;
    private PdfDocument pdf2;
    private bool disposed;
    public PdfComparer(string file1Path, string file2Path)
    {
        // Load the two PDFs
        pdf1 = PdfDocument.FromFile(file1Path);
        pdf2 = PdfDocument.FromFile(file2Path);
    }
    public ComparisonResult Compare()
    {
        var result = new ComparisonResult();
        // Compare PDF documents
        string text1 = pdf1?.ExtractAllText() ?? string.Empty;
        string text2 = pdf2?.ExtractAllText() ?? string.Empty;
        result.AreIdentical = string.Equals(text1, text2, StringComparison.Ordinal);
        result.SimilarityPercent = CalculateSimilarity(text1, text2);
        result.Differences = FindDifferences(text1, text2);
        return result;
    }
    private List<string> FindDifferences(string text1, string text2)
    {
        var differences = new List<string>();
        // Normalize nulls
        text1 ??= string.Empty;
        text2 ??= string.Empty;
        if (string.Equals(text1, text2, StringComparison.Ordinal))
            return differences;
        // Page-aware comparisons aren't possible here because we only have full-text;
        // produce a concise, actionable difference entry:
        int min = Math.Min(text1.Length, text2.Length);
        int firstDiff = -1;
        for (int i = 0; i < min; i++)
        {
            if (text1[i] != text2[i])
            {
                firstDiff = i;
                break;
            }
        }
        if (firstDiff == -1 && text1.Length != text2.Length)
        {
            // No differing character in the overlap, but lengths differ
            firstDiff = min;
        }
        // Create short excerpts around the first difference for context
        int excerptLength = 200;
        string excerpt1 = string.Empty;
        string excerpt2 = string.Empty;
        if (firstDiff >= 0)
        {
            int start1 = Math.Max(0, firstDiff);
            int len1 = Math.Min(excerptLength, Math.Max(0, text1.Length - start1));
            excerpt1 = start1 < text1.Length ? text1.Substring(start1, len1) : string.Empty;
            int start2 = Math.Max(0, firstDiff);
            int len2 = Math.Min(excerptLength, Math.Max(0, text2.Length - start2));
            excerpt2 = start2 < text2.Length ? text2.Substring(start2, len2) : string.Empty;
        }
        // HTML-encode excerpts if they will be embedded into HTML reports
        string safeExcerpt1 = System.Net.WebUtility.HtmlEncode(excerpt1);
        string safeExcerpt2 = System.Net.WebUtility.HtmlEncode(excerpt2);
        double similarity = CalculateSimilarity(text1, text2);
        differences.Add($"Similarity: {similarity:F2}%. Lengths: [{text1.Length}, {text2.Length}]. First difference index: {firstDiff}. Excerpt1: \"{safeExcerpt1}\" Excerpt2: \"{safeExcerpt2}\"");
        return differences;
    }
    public void Close()
    {
        Dispose();
    }
    public void Dispose()
    {
        if (disposed) return;
        disposed = true;
        pdf1?.Dispose();
        pdf2?.Dispose();
    }
}
public class ComparisonResult
{
    // True when extracted text is exactly the same
    public bool AreIdentical { get; set; }
    // Similarity expressed as percent (0..100)
    public double SimilarityPercent { get; set; }
    // Human readable difference entries
    public List<string> Differences { get; set; } = new List<string>();
}

Bu sınıf yapısı, belge nesnelerini ve referansları düzgün bir şekilde yönetirken PDF belgelerini karşılaştırmak için temiz bir yol sağlar.

Çıktı

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 7 - Karşılaştırıcı Sınıf Deseni Çıktısı

Görsel Karşılaştırma Raporu Oluşturma

İki belge arasındaki farkları vurgulayan HTML tabanlı bir rapor oluşturun ve bunu bir PDF dosyası olarak kaydedin:

public static void CreateComparisonReport(string pdf1Path, string pdf2Path, string outputPath)
{
    // Load PDFs for comparison
    var pdf1 = PdfDocument.FromFile(pdf1Path);
    var pdf2 = PdfDocument.FromFile(pdf2Path);
    // Build HTML report with details
    string htmlReport = @"
        <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; margin: 20px; }
                .identical { color: green; }
                .different { color: red; }
                table { width: 100%; border-collapse: collapse; }
                th, td { border: 1px solid #ddd; padding: 8px; }
            </style>
        </head>
        <body>
            <h1>PDF Comparison Report</h1>
            <table>
                <tr><th>Page</th><th>Status</th></tr>";
    // Process each page
    for (int i = 0; i < Math.Max(pdf1.PageCount, pdf2.PageCount); i++)
    {
        string page1 = i < pdf1.PageCount ? pdf1.ExtractTextFromPage(i) : "";
        string page2 = i < pdf2.PageCount ? pdf2.ExtractTextFromPage(i) : "";
        bool identical = page1 == page2;
        string status = identical ? "Identical" : "Different";
        htmlReport += $"<tr><td>Page {i + 1}</td><td class='{status.ToLower()}'>{status}</td></tr>";
    }
    htmlReport += "</table></body></html>";
    // Create and save the report
    var renderer = new ChromePdfRenderer();
    var reportPdf = renderer.RenderHtmlAsPdf(htmlReport);
    reportPdf.SaveAs(outputPath);
    Console.WriteLine($"Report saved to: {outputPath}");
}

Bu kod, karşılaştırma sonuçlarıyla profesyonel bir PDF belgesi oluşturma yöntemini gösterir. Rapor, belirtilen yola kaydedilir.

Birden Çok PDF Belgesini Karşılaştırma

Birden çok PDF belgesini aynı anda karşılaştırmanız gerektiğinde, bu yöntemi kullanın:

public static void CompareMultiplePdfs(params string[] pdfPaths)
{
    if (pdfPaths.Length < 2)
    {
        Console.WriteLine("Need at least two files to compare");
        return;
    }
    // Load multiple PDF documents
    var pdfs = new List<PdfDocument>();
    foreach (var path in pdfPaths)
    {
        pdfs.Add(PdfDocument.FromFile(path));
    }
    // Compare all documents
    for (int i = 0; i < pdfs.Count - 1; i++)
    {
        for (int j = i + 1; j < pdfs.Count; j++)
        {
            string text1 = pdfs[i].ExtractAllText();
            string text2 = pdfs[j].ExtractAllText();
            bool identical = text1 == text2;
            Console.WriteLine($"File {i+1} vs File {j+1}: {(identical ? "Identical" : "Different")}");
        }
    }
    // Close all documents
    pdfs.ForEach(pdf => pdf.Dispose());
}

Bu yaklaşım, toplu işleme gereksinimleri için tek seferde birden çok PDF belgesini karşılaştırmayı sağlar.

Çıktı

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 8 - Birden Fazla PDF Çıktısı

Gerçek Dünya Sözleşme Sürüm Kontrolü

Hukuki belgelerdeki revizyonları izlemek için pratik bir örnek:

public class ContractVersionControl
{
    public static void CompareContractVersions(string originalPath, string revisedPath)
    {
        // System for comparing contract versions
        Console.WriteLine("Contract Version Comparison System");
        var original = PdfDocument.FromFile(originalPath);
        var revised = PdfDocument.FromFile(revisedPath);
        // Extract contract contents
        string originalText = original.ExtractAllText();
        string revisedText = revised.ExtractAllText();
        if (originalText == revisedText)
        {
            Console.WriteLine("No changes detected");
        }
        else
        {
            Console.WriteLine("Changes detected in revised version");
            // Create detailed report
            string reportPath = $"contract_comparison_{DateTime.Now:yyyyMMdd}.pdf";
            CreateComparisonReport(originalPath, revisedPath, reportPath);
            Console.WriteLine($"Report created: {reportPath}");
        }
        // Close documents
        original.Dispose();
        revised.Dispose();
    }
}

Bu, iki PDF sözleşme sürümünü karşılaştırma ve inceleme için raporlar oluşturma yöntemini gösterir. Sistem otomatik olarak değişiklikleri algılar ve dökümantasyon oluşturur.

Şifre Koruma Altındaki PDF'leri İşleme

IronPDF, yükleme yöntemi çağrılırken şifreyi geçerek şifreli PDF dosyalarını sorunsuz bir şekilde işler:

public static bool CompareProtectedPdfs(string pdf1Path, string pass1,
                                        string pdf2Path, string pass2)
{
    // Load password-protected two PDFs
    var pdf1 = PdfDocument.FromFile(pdf1Path, pass1);
    var pdf2 = PdfDocument.FromFile(pdf2Path, pass2);
    // Extract and compare text
    string text1 = pdf1.ExtractAllText();
    string text2 = pdf2.ExtractAllText();
    bool result = text1 == text2;
    // Close and dispose
    pdf1.Dispose();
    pdf2.Dispose();
    return result;
}

Korunan PDF'leri yüklerken şifre parametresini geçmek yeterlidir. IronPDF, şifre çözmeyi otomatik olarak gerçekleştirir.

Giriş

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 9 - Korunan PDF 1

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 10 - Korunan PDF 2

Çıktı

Adım Adım Talimatlar

PDF karşılaştırmasını .NET projenize uygulamak için şu adımları takip edin:

  1. IronPDF for .NET paketini NuGet üzerinden yükleyin
  2. IronPDF ad alanı referansını ekleyin
  3. Her dosya için PdfDocument örneği oluşturun
  4. İçeriği almak için ExtractAllText() gibi yöntemleri kullanın
  5. Çıkartılan metni karşılaştırın veya özel mantık uygulayın
  6. Gerekirse sonuçları kaydedin veya raporlar oluşturun
  7. Kaynakları serbest bırakmak için belge nesnelerini kapatın

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 12 - Çapraz platform uyumluluğu

Lisansınızı Ayarlama

IronPDF'i filigransız kullanmak için lisans anahtarınızı ayarlayın:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Mevcut seçenekler hakkında ayrıntılı bilgi için lisanslama sayfasını ziyaret edin. IronPDF'in ücretsiz deneme sürümünü indirip, profesyonel düzeyde karşılaştırma yeteneklerini kullanarak PDF dosyalarını ayarlayın.

En İyi Uygulamalar

  1. Takip edilen değişikliklerle çalışıyorsanız, karşılaştırmadan önce tüm revizyonları kabul edin
  2. Kritik dosya işlemleri için hata yönetimi geliştirin
  3. Büyük belgeler için sayfa özelinde karşılaştırmalar oluşturarak performansı artırın
  4. Çoklu PDF belgeleri için karşılaştırmaları asenkron çalıştırın
  5. En son özellikler ve destek için kütüphanenizi düzenli olarak güncelleyin

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 14 - İki PDF dosyasını C# kullanarak karşılaştırma - IronPDF

Sonuç

IronPDF, güçlü çıkarma yetenekleri ve sezgisel API sayesinde iki PDF dosyasını C# kullanarak karşılaştırma sürecini basitleştirir. Hem temel karşılaştırmalardan hem de detaylı raporlar oluşturmaya kadar, IronPDF, sağlam belge karşılaştırma iş akışları için gereken tüm araçları sağlar.

Kolay kurulum, kapsamlı işlevsellik ve çapraz platform desteğinin birleşimi, .NET uygulamalarında PDF karşılaştırmasını uygulayan geliştiriciler için IronPDF'i ideal bir seçim haline getirir. Geliştirmekte olduğunuz belge yönetim sistemleri veya sürüm kontrol çözümleri ne olursa olsun, IronPDF'nin doğrudan yaklaşımı sizi hızlı bir şekilde çalıştırır.

Bugün IronPDF'in ücretsiz denemesine başlayın ve profesyonel PDF karşılaştırma özelliklerini uygulayın. Tam teknik destek ve geniş kapsamlı dökümantasyonla, saatler içinde üretime hazır işlevsellik elde edersiniz. Gelişmiş özellikler hakkında daha fazla bilgi edinmek için tam dokümantasyona başvurun.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez