IRONSOFTWAREHOME
UTILISATION DE IRONPDF

Créer une API PDF .NET avec IronPDF

Curtis Chau
Curtis Chau
Updated: 28 juin 2026

La comparaison automatisée des documents PDF est essentielle pour suivre les modifications, valider les différentes versions et automatiser les flux de travail d'assurance qualité. Que vous ayez besoin de comparer deux fichiers PDF pour la gestion de documents ou de trouver des différences dans les révisions d'un contrat, IronPDF fournit une solution simplifiée pour comparer des fichiers PDF en C#.

Ce tutoriel explique comment comparer deux documents PDF à l'aide des fonctionnalités d'extraction de texte d'IronPDF, depuis les comparaisons de base jusqu'à la création de rapports de différences détaillés. Vous apprendrez des techniques pratiques avec des exemples de code fonctionnant sur les plateformes Windows, Linux, macOS, Docker et cloud.

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 1 - IronPDF

Prérequis et Configuration

Avant de commencer, assurez-vous d'avoir installé :

  • Visual Studio 2019 ou version ultérieure
  • .NET Framework 4.6.2+ ou .NET Core 3.1+
  • Connaissances de base en C#

Installer le package .NET IronPDF

Installez IronPDF via le gestionnaire de packages NuGet dans votre projet .NET :

PM > Install-Package IronPdf

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 2 - Installation

Ou en utilisant l'interface de ligne de commande .NET :

dotnet add package IronPdf

Ajoutez la référence de l'espace de noms nécessaire à vos fichiers :

using IronPdf;
using System;

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 3 - Fonctionnalités

Comparaison de documents PDF de base

Commençons par un exemple de code pour comparer des fichiers PDF en extrayant et en comparant leur contenu textuel :

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

Ce code charge deux fichiers PDF à l'aide de la méthode PdfDocument.FromFile() d'IronPDF, extrait tout le contenu textuel et effectue une comparaison de chaînes directe. La méthode de comparaison vous fournit des métriques pour identifier à quel point les documents correspondent.

Entrée

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 4 - Exemple de PDF 1

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 5 - Exemple de PDF 2

Sortie

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 6 - Sortie de la console

Méthode de comparaison page par page

Pour une analyse plus détaillée, comparez deux PDF page par page pour identifier exactement où les différences se produisent :

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

La méthode ExtractTextFromPage() permet l'extraction ciblée de pages spécifiques. Cette approche aide les développeurs à identifier les divergences entre différentes versions de documents PDF.

Utilisation du modèle de classe Comparer

Créez une classe de comparateur dédiée pour améliorer votre fonctionnalité de comparaison :

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>();
}

Cette structure de classe offre un moyen propre de comparer des documents PDF tout en gérant correctement les objets et références de documents.

Sortie

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 7 - Sortie du modèle de classe Comparer

Création d'un rapport de comparaison visuel

Générez un rapport basé sur HTML qui souligne les différences entre deux documents et enregistrez-le sous forme de fichier PDF :

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

Ce code montre comment créer un document PDF professionnel avec les résultats de la comparaison. Le rapport est enregistré dans le chemin spécifié.

Comparer plusieurs documents PDF

Lorsque vous devez comparer plusieurs documents PDF simultanément, utilisez cette méthode :

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());
}

Cette approche permet de comparer plusieurs documents PDF en une seule exécution, utile pour les besoins de traitement par lots.

Sortie

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 8 - Sortie de plusieurs fichiers PDF

Gestion de la version des contrats en pratique

Voici un exemple pratique de suivi des révisions dans des documents juridiques :

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();
    }
}

Cela montre comment comparer deux versions d'un contrat PDF et générer des rapports pour révision. Le système détecte automatiquement les changements et crée la documentation.

Gestion des PDF protégés par mot de passe

IronPDF gère en toute transparence les fichiers PDF chiffrés en passant le mot de passe lors de l'appel à la méthode de chargement :

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

Il suffit de passer le paramètre de mot de passe lors du chargement de PDFs protégés. IronPDF gère automatiquement le déchiffrement.

Entrée

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 9 - PDF protégé 1

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 10 - PDF protégé 2

Sortie

Instructions étape par étape

Suivez ces étapes pour implémenter la comparaison PDF dans votre projet .NET :

  1. Installez le package IronPDF for .NET via NuGet
  2. Ajouter la référence à l'espace de noms IronPDF
  3. Créer une instance de PdfDocument pour chaque fichier
  4. Utiliser des méthodes comme ExtractAllText() pour obtenir le contenu
  5. Comparer le texte extrait ou implémenter une logique personnalisée
  6. Enregistrez les résultats ou générez des rapports selon les besoins
  7. Fermez les objets du document pour libérer des ressources

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 12 - Compatibilité multiplateforme

Réglage de votre licence

Pour utiliser IronPDF sans filigranes, définissez votre clé de licence :

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

Consultez la page relative aux licences pour obtenir des informations détaillées sur les options disponibles. Téléchargez la version d'essai gratuite d'IronPDF et configurez vos fichiers PDF en utilisant des fonctionnalités de comparaison de qualité professionnelle.

Bonnes pratiques

  1. Acceptez toutes les modifications avant la comparaison si vous utilisez le suivi des modifications.
  2. Développer une gestion des erreurs pour les opérations de fichiers critiques
  3. Améliorer les performances en créant des comparaisons spécifiques à chaque page pour les documents volumineux
  4. Effectuer des comparaisons de manière asynchrone pour plusieurs documents PDF
  5. Mettez régulièrement à jour votre bibliothèque pour bénéficier des dernières fonctionnalités et de l'assistance.

Comment comparer deux fichiers PDF avec C# et IronPDF : Image 14 - Comparer deux fichiers PDF avec C# - IronPDF

Conclusion

IronPDF simplifie le processus de comparaison de deux fichiers PDF en utilisant C# avec son API intuitive et ses puissantes capacités d'extraction. De la comparaison de base à la création de rapports détaillés, IronPDF fournit tous les outils nécessaires pour des flux de travail de comparaison de documents robustes.

La combinaison d'une installation facile, de fonctionnalités complètes et d'un support multiplateforme fait d'IronPDF le choix idéal pour les développeurs implémentant la comparaison PDF dans les applications .NET. Que vous développiez des systèmes de gestion de documents ou des solutions de contrôle de version, l'approche simple d'IronPDF vous permet de démarrer rapidement.

Démarrez votre essai gratuit d'IronPDF dès aujourd'hui et profitez de ses fonctionnalités professionnelles de comparaison de PDF. Avec un support technique complet et une documentation approfondie, vous disposerez de fonctionnalités prêtes pour la production en quelques heures. Consultez la documentation complète pour en savoir plus sur les fonctionnalités avancées.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise