Altbilgi içeriğine atla
IRONPDF KULLANARAK

C# kullanarak ASP .NET içinde HTML'yi PDF'ye nasıl dönüştürürsünüz.

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:

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;
using IronPdf;
using System;
Imports IronPdf
Imports System
$vbLabelText   $csharpLabel

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;
    }
}
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;
    }
}
Imports System

Public Class BasicPdfComparer
    Public Shared Function ComparePdfFiles(firstPdfPath As String, secondPdfPath As String) As Boolean
        ' Load two PDF documents
        Dim pdf1 = PdfDocument.FromFile(firstPdfPath)
        Dim pdf2 = PdfDocument.FromFile(secondPdfPath)
        ' Extract all text from both PDFs
        Dim text1 As String = pdf1.ExtractAllText()
        Dim text2 As String = pdf2.ExtractAllText()
        ' Compare the two documents
        Dim areIdentical As Boolean = text1 = text2
        ' Find differences and calculate similarity
        Dim similarity As Double = CalculateSimilarity(text1, text2)
        Console.WriteLine($"Documents are {(If(areIdentical, "identical", "different"))}")
        Console.WriteLine($"Similarity: {similarity:F2}%")
        Return areIdentical
    End Function

    Private Shared Function CalculateSimilarity(text1 As String, text2 As String) As Double
        If text1 = text2 Then Return 100.0
        If String.IsNullOrEmpty(text1) OrElse String.IsNullOrEmpty(text2) Then Return 0.0
        Dim matchingChars As Integer = 0
        Dim minLength As Integer = Math.Min(text1.Length, text2.Length)
        For i As Integer = 0 To minLength - 1
            If text1(i) = text2(i) Then matchingChars += 1
        Next
        Return matchingChars / Math.Max(text1.Length, text2.Length) * 100
    End Function
End Class
$vbLabelText   $csharpLabel

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");
}
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");
}
Public Shared Sub ComparePageByPage(firstPdfPath As String, secondPdfPath As String)
    ' Load two files
    Dim pdf1 = PdfDocument.FromFile(firstPdfPath)
    Dim pdf2 = PdfDocument.FromFile(secondPdfPath)
    Dim maxPages As Integer = Math.Max(pdf1.PageCount, pdf2.PageCount)
    Dim differencesFound As Integer = 0
    For i As Integer = 0 To maxPages - 1
        ' Process each page
        Dim page1Text As String = If(i < pdf1.PageCount, pdf1.ExtractTextFromPage(i), "")
        Dim page2Text As String = If(i < pdf2.PageCount, pdf2.ExtractTextFromPage(i), "")
        If page1Text <> page2Text Then
            differencesFound += 1
            Console.WriteLine($"Page {i + 1}: Differences detected")
        Else
            Console.WriteLine($"Page {i + 1}: Identical")
        End If
    Next
    Console.WriteLine(vbCrLf & $"Summary: {differencesFound} page(s) with changes")
End Sub
$vbLabelText   $csharpLabel

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>();
}
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>();
}
Imports System
Imports System.Collections.Generic
Imports System.Net

Public Class PdfComparer
    Implements IDisposable

    Private pdf1 As PdfDocument
    Private pdf2 As PdfDocument
    Private disposed As Boolean

    Public Sub New(file1Path As String, file2Path As String)
        ' Load the two PDFs
        pdf1 = PdfDocument.FromFile(file1Path)
        pdf2 = PdfDocument.FromFile(file2Path)
    End Sub

    Public Function Compare() As ComparisonResult
        Dim result As New ComparisonResult()
        ' Compare PDF documents
        Dim text1 As String = If(pdf1?.ExtractAllText(), String.Empty)
        Dim text2 As String = If(pdf2?.ExtractAllText(), String.Empty)
        result.AreIdentical = String.Equals(text1, text2, StringComparison.Ordinal)
        result.SimilarityPercent = CalculateSimilarity(text1, text2)
        result.Differences = FindDifferences(text1, text2)
        Return result
    End Function

    Private Function FindDifferences(text1 As String, text2 As String) As List(Of String)
        Dim differences As New List(Of String)()
        ' Normalize nulls
        text1 = If(text1, String.Empty)
        text2 = If(text2, String.Empty)
        If String.Equals(text1, text2, StringComparison.Ordinal) Then
            Return differences
        End If
        ' Page-aware comparisons aren't possible here because we only have full-text;
        ' produce a concise, actionable difference entry:
        Dim min As Integer = Math.Min(text1.Length, text2.Length)
        Dim firstDiff As Integer = -1
        For i As Integer = 0 To min - 1
            If text1(i) <> text2(i) Then
                firstDiff = i
                Exit For
            End If
        Next
        If firstDiff = -1 AndAlso text1.Length <> text2.Length Then
            ' No differing character in the overlap, but lengths differ
            firstDiff = min
        End If
        ' Create short excerpts around the first difference for context
        Dim excerptLength As Integer = 200
        Dim excerpt1 As String = String.Empty
        Dim excerpt2 As String = String.Empty
        If firstDiff >= 0 Then
            Dim start1 As Integer = Math.Max(0, firstDiff)
            Dim len1 As Integer = Math.Min(excerptLength, Math.Max(0, text1.Length - start1))
            excerpt1 = If(start1 < text1.Length, text1.Substring(start1, len1), String.Empty)
            Dim start2 As Integer = Math.Max(0, firstDiff)
            Dim len2 As Integer = Math.Min(excerptLength, Math.Max(0, text2.Length - start2))
            excerpt2 = If(start2 < text2.Length, text2.Substring(start2, len2), String.Empty)
        End If
        ' HTML-encode excerpts if they will be embedded into HTML reports
        Dim safeExcerpt1 As String = WebUtility.HtmlEncode(excerpt1)
        Dim safeExcerpt2 As String = WebUtility.HtmlEncode(excerpt2)
        Dim similarity As Double = CalculateSimilarity(text1, text2)
        differences.Add($"Similarity: {similarity:F2}%. Lengths: [{text1.Length}, {text2.Length}]. First difference index: {firstDiff}. Excerpt1: ""{safeExcerpt1}"" Excerpt2: ""{safeExcerpt2}""")
        Return differences
    End Function

    Public Sub Close()
        Dispose()
    End Sub

    Public Sub Dispose() Implements IDisposable.Dispose
        If disposed Then Return
        disposed = True
        pdf1?.Dispose()
        pdf2?.Dispose()
    End Sub
End Class

Public Class ComparisonResult
    ' True when extracted text is exactly the same
    Public Property AreIdentical As Boolean
    ' Similarity expressed as percent (0..100)
    Public Property SimilarityPercent As Double
    ' Human readable difference entries
    Public Property Differences As List(Of String) = New List(Of String)()
End Class
$vbLabelText   $csharpLabel

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}");
}
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}");
}
Imports System

Public Shared Sub CreateComparisonReport(pdf1Path As String, pdf2Path As String, outputPath As String)
    ' Load PDFs for comparison
    Dim pdf1 = PdfDocument.FromFile(pdf1Path)
    Dim pdf2 = PdfDocument.FromFile(pdf2Path)
    ' Build HTML report with details
    Dim htmlReport As String = "
        <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 i As Integer = 0 To Math.Max(pdf1.PageCount, pdf2.PageCount) - 1
        Dim page1 As String = If(i < pdf1.PageCount, pdf1.ExtractTextFromPage(i), "")
        Dim page2 As String = If(i < pdf2.PageCount, pdf2.ExtractTextFromPage(i), "")
        Dim identical As Boolean = page1 = page2
        Dim status As String = If(identical, "Identical", "Different")
        htmlReport &= $"<tr><td>Page {i + 1}</td><td class='{status.ToLower()}'>{status}</td></tr>"
    Next
    htmlReport &= "</table></body></html>"
    ' Create and save the report
    Dim renderer = New ChromePdfRenderer()
    Dim reportPdf = renderer.RenderHtmlAsPdf(htmlReport)
    reportPdf.SaveAs(outputPath)
    Console.WriteLine($"Report saved to: {outputPath}")
End Sub
$vbLabelText   $csharpLabel

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());
}
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());
}
Imports System
Imports System.Collections.Generic

Public Shared Sub CompareMultiplePdfs(ParamArray pdfPaths As String())
    If pdfPaths.Length < 2 Then
        Console.WriteLine("Need at least two files to compare")
        Return
    End If

    ' Load multiple PDF documents
    Dim pdfs As New List(Of PdfDocument)()
    For Each path As String In pdfPaths
        pdfs.Add(PdfDocument.FromFile(path))
    Next

    ' Compare all documents
    For i As Integer = 0 To pdfs.Count - 2
        For j As Integer = i + 1 To pdfs.Count - 1
            Dim text1 As String = pdfs(i).ExtractAllText()
            Dim text2 As String = pdfs(j).ExtractAllText()
            Dim identical As Boolean = text1 = text2
            Console.WriteLine($"File {i + 1} vs File {j + 1}: {(If(identical, "Identical", "Different"))}")
        Next
    Next

    ' Close all documents
    pdfs.ForEach(Sub(pdf) pdf.Dispose())
End Sub
$vbLabelText   $csharpLabel

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();
    }
}
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();
    }
}
Public Class ContractVersionControl
    Public Shared Sub CompareContractVersions(originalPath As String, revisedPath As String)
        ' System for comparing contract versions
        Console.WriteLine("Contract Version Comparison System")
        Dim original = PdfDocument.FromFile(originalPath)
        Dim revised = PdfDocument.FromFile(revisedPath)
        ' Extract contract contents
        Dim originalText As String = original.ExtractAllText()
        Dim revisedText As String = revised.ExtractAllText()
        If originalText = revisedText Then
            Console.WriteLine("No changes detected")
        Else
            Console.WriteLine("Changes detected in revised version")
            ' Create detailed report
            Dim reportPath As String = $"contract_comparison_{DateTime.Now:yyyyMMdd}.pdf"
            CreateComparisonReport(originalPath, revisedPath, reportPath)
            Console.WriteLine($"Report created: {reportPath}")
        End If
        ' Close documents
        original.Dispose()
        revised.Dispose()
    End Sub
End Class
$vbLabelText   $csharpLabel

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;
}
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;
}
Public Shared Function CompareProtectedPdfs(pdf1Path As String, pass1 As String, pdf2Path As String, pass2 As String) As Boolean
    ' Load password-protected two PDFs
    Dim pdf1 = PdfDocument.FromFile(pdf1Path, pass1)
    Dim pdf2 = PdfDocument.FromFile(pdf2Path, pass2)
    ' Extract and compare text
    Dim text1 As String = pdf1.ExtractAllText()
    Dim text2 As String = pdf2.ExtractAllText()
    Dim result As Boolean = text1 = text2
    ' Close and dispose
    pdf1.Dispose()
    pdf2.Dispose()
    Return result
End Function
$vbLabelText   $csharpLabel

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ı

C# kullanarak IronPDF ile İki PDF Dosyasını Karşılaştırma: Görsel 11 - Parola ile Korunan PDF Çıktıları

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";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

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.

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

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.

Sıkça Sorulan Sorular

IronPDF nedir ve PDF dosyalarını karşılaştırmada nasıl yardımcı olur?

IronPDF, PDF dosyalarıyla çalışmak için araçlar sunan bir .NET kütüphanesidir, içerik veya yapısal farklılıklar için iki PDF dökümanını programlı olarak karşılaştırma özellikleri de dahil.

IronPDF, iki PDF dosyasındaki farklılıkları vurgulayabilir mi?

Evet, IronPDF farklılıkları içeriklerini karşılaştırarak iki PDF dosyasındaki değişiklikleri veya uyumsuzlukları detaylı bir raporla vurgulayabilir.

IronPDF ile PDF'leri karşılaştırmak için gelişmiş C# becerilerine ihtiyacım var mı?

Hayır, gelişmiş C# becerilerine ihtiyacınız yok. IronPDF, PDF dosyalarını karşılaştırmak için basit ve sezgisel yöntemler sunar, bu da onu çeşitli beceri seviyelerindeki geliştiriciler için erişilebilir kılar.

IronPDF ile şifrelenmiş PDF dosyalarını karşılaştırmak mümkün mü?

Evet, IronPDF doğru parola ile erişilir hale getirilen belgelerin içeriğine erişim sağlanarak şifreli PDF dosyalarını karşılaştırmayı destekler.

IronPDF, iki PDF arasındaki hangi türdeki farklılıkları tespit edebilir?

IronPDF, metin değişiklikleri, görüntü modifikasyonları ve düzen veya formatlama değişiklikleri gibi yapısal değişiklikler dahil olmak üzere bir dizi farklılık tespit edebilir.

IronPDF, mevcut C# uygulamalarına entegre edilebilir mi?

Evet, IronPDF mevcut C# uygulamalarına kolayca entegre edilebilir, böylece geliştiriciler, önemli kod tabanı değişikliklerine gerek duymadan PDF karşılaştırma işlevselliğini ekleyebilir.

IronPDF diğer .NET uygulamalarıyla uyumlu mu?

IronPDF, .NET çerçevesi içinde çalışan geliştiriciler için sorunsuz bir deneyim sağlayarak tüm .NET uygulamaları ile uyumlu olacak şekilde tasarlanmıştır.

IronPDF birden çok PDF dosyasının toplu karşılaştırmasını destekliyor mu?

Evet, IronPDF büyük belge hacimlerini işlemek için tek bir işlemde birden çok PDF dosyasını karşılaştırmanıza olanak tanıyan toplu işlemi destekler.

IronPDF, PDF karşılaştırmalarının doğruluğunu nasıl sağlar?

IronPDF, hem metin hem de görsel öğeleri analiz ederek herhangi bir uyumsuzluğu tespit etmek için gelişmiş algoritmalar kullanarak kesin ve güvenilir karşılaştırmalar sağlar.

C#'da PDF karşılaştırması için IronPDF'i kullanmaya başlamak için ilk adım nedir?

İlk adım, NuGet Paket Yöneticisi aracılığıyla C# geliştirme ortamınıza IronPDF kütüphanesini yüklemektir, bu da PDF'leri karşılaştırmaya başlamak için gerekli tüm araçları sağlar.

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ı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara