COMPARAISON DES PRODUITS

PDFsharp Signer des documents PDF numériquement vs IronPDF (Exemple de code)

Kannaopat Udonpant
Kannapat Udonpant
février 19, 2025
Partager:

Introduction

Une signature numérique est une technique mathématique qui vérifie l'authenticité et l'intégrité d'un document électronique. Il est utilisé comme une signature électronique pour signer numériquement des documents dans plusieurs juridictions, garantissant une grande sécurité et une validité légale.

Une clé privée, connue uniquement du signataire, est utilisée pour établir une signature numérique unique et la lier au document lorsqu'il est signé numériquement. Le nom, l'adresse e-mail et d'autres informations personnelles du signataire sont inclus dans cette signature. L'authenticité d'un document signé numériquement ne peut être confirmée que si le destinataire a accès à la clé publique du signataire. La légitimité de la signature est confirmée en la déchiffrant à l'aide de clés publiques.

Dans ce tutoriel, nous comparons comment ajouter des signatures numériques aux documents PDF en utilisantPDFSharp etIronPDF. Les signatures numériques sont essentielles pour vérifier l'authenticité des documents, et les fichiers PDF sont un format populaire pour de telles opérations.

PDFsharp est une bibliothèque open-source bien connue pour la création et la manipulation de PDF, tandis qu'IronPDF est une bibliothèque PDF .NET robuste offrant des fonctionnalités similaires avec des fonctionnalités avancées supplémentaires.

Ce guide traite de la signature d'un document PDF avec une clé privée et de la vérification de la signature, accompagnés de codes sources d'exemples pour les deux bibliothèques.

Pourquoi les signatures numériques sont-elles importantes ?

Les signatures numériques garantissent l'intégrité des documents et offrent une sécurité robuste. Ils sont couramment utilisés pour les contrats, accords et autres documents juridiques.

Avantages clés :

  • Plus sécurisé et inviolable que les signatures traditionnelles.
  • Vérifié électroniquement, réduisant les efforts de vérification manuelle.
  • Activer la signature à distance de documents à l'échelle mondiale.
  • Offrir une assurance plus grande que les signatures traditionnelles.

Aperçu de PDFsharp

PDFSharp est une bibliothèque C# open-source principalement conçue pour créer et manipuler des documents PDF. Il est largement utilisé pour des tâches PDF de base, telles que la génération de fichiers PDF simples, la modification de documents existants et le rendu de graphiques. Toutefois, sa prise en charge native des fonctionnalités avancées comme les signatures numériques est limitée, et les développeurs doivent souvent s'appuyer sur des bibliothèques tierces, telles que BouncyCastle, pour intégrer ces fonctionnalités. PDFsharp est open-source, sous la licence MIT, ce qui en fait un bon choix pour les projets où le coût et la flexibilité sont prioritaires.

Caractéristiques principales

  • Open-source et gratuit sous la licence MIT.
  • Création et manipulation PDF de base.
  • Peut être étendu avec des bibliothèques externes comme BouncyCastle pour les signatures numériques.
  • Ne propose pas une prise en charge native pour des fonctionnalités PDF avancées telles que la conversion HTML en PDF et la gestion de formulaires complexes.

Présentation d'IronPDF

Signer des documents PDF numériquement avec PDFsharp vs IronPDF (Exemple de code) : Figure 1 - image.png

IronPDF est une bibliothèque PDF .NET robuste qui offre une API simple et puissante pour générer, éditer et manipuler des fichiers PDF. L'une de ses caractéristiques remarquables est la facilité avec laquelle les développeurs peuvent implémenter des signatures numériques, essentielles pour vérifier l'authenticité des documents. En plus des signatures numériques, IronPDF prend en charge des fonctionnalités avancées telles queConversion de HTML en PDF, filigranage, et gestion de formulaires. Il est particulièrement précieux pour les développeurs travaillant sur des projets commerciaux où la mise en œuvre rapide et des fonctionnalités robustes sont une priorité.

Caractéristiques principales

  • Licence commerciale avec support payant, et un essai gratuit disponible.
  • API facile à utiliser avec des fonctionnalités modernes poursignature numériqueet manipulation de documents.
  • Inclut une prise en charge intégrée pour la conversion de format HTML en PDF,formulaire de gestionetAnnotations PDF (telles que les annotations de pièce jointe).
  • Intégration transparente avec des fonctionnalités avancées telles que l'horodatage, les images de signature visuelle, etchiffrement.

Ajout d'une signature numérique par programmation avec PDFsharp

PDFsharp est une bibliothèque open-source conçue pour la création et la manipulation de PDF en C#. Cependant, bien qu'il propose un support pour ajouter une signature, vous devrez intégrer un outil tiers comme BouncyCastle pour garantir une signature numérique sécurisée et précise des documents PDF.

Étapes pour ajouter une signature numérique avec PDFsharp

  1. Installez PDFsharp et BouncyCastle via NuGet.

  2. Créer un certificat numérique à l'aide de X509Certificate2.

  3. Signer le PDF avec BouncyCastle.

Exemple de code

using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf.Signatures;
using BouncyCastleSigner;
using PdfSharp.Quality;
class Program
{
    static void Main(string[] args)
    {
        var font = new XFont("Verdana", 10.0, XFontStyleEx.Regular);
        var document = new PdfSharp.Pdf.PdfDocument();
        var pdfPage = document.AddPage();
        var xGraphics = XGraphics.FromPdfPage(pdfPage);
        var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);
        xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);
        var options = new DigitalSignatureOptions
        {
            ContactInfo = "John Doe",
            Location = "Seattle",
            Reason = "License Agreement",
            Rectangle = new XRect(36.0, 700.0, 400.0, 50.0),
            AppearanceHandler = new SignatureAppearanceHandler()
        };
        var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
    new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);
        document.Save("PdfSharpSignature.pdf");
    }
    static (X509Certificate2, X509Certificate2Collection) GetCertificate()
    {
        var certFolder = IOUtility.GetAssetsPath("C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security");
        var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
        var rawData = File.ReadAllBytes(pfxFile);
        // This code is for demonstration only. Do not use password literals for real certificates in source code.
        var certificatePassword = "Passw0rd";
        var certificate = new X509Certificate2(rawData,
            certificatePassword,
            X509KeyStorageFlags.MachineKeySet 
 X509KeyStorageFlags.PersistKeySet 
 X509KeyStorageFlags.Exportable);
        var collection = new X509Certificate2Collection();
        collection.Import(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet 
 X509KeyStorageFlags.PersistKeySet 
 X509KeyStorageFlags.Exportable);
        return (certificate, collection);
    }
}
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf.Signatures;
using BouncyCastleSigner;
using PdfSharp.Quality;
class Program
{
    static void Main(string[] args)
    {
        var font = new XFont("Verdana", 10.0, XFontStyleEx.Regular);
        var document = new PdfSharp.Pdf.PdfDocument();
        var pdfPage = document.AddPage();
        var xGraphics = XGraphics.FromPdfPage(pdfPage);
        var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);
        xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);
        var options = new DigitalSignatureOptions
        {
            ContactInfo = "John Doe",
            Location = "Seattle",
            Reason = "License Agreement",
            Rectangle = new XRect(36.0, 700.0, 400.0, 50.0),
            AppearanceHandler = new SignatureAppearanceHandler()
        };
        var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
    new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);
        document.Save("PdfSharpSignature.pdf");
    }
    static (X509Certificate2, X509Certificate2Collection) GetCertificate()
    {
        var certFolder = IOUtility.GetAssetsPath("C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security");
        var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
        var rawData = File.ReadAllBytes(pfxFile);
        // This code is for demonstration only. Do not use password literals for real certificates in source code.
        var certificatePassword = "Passw0rd";
        var certificate = new X509Certificate2(rawData,
            certificatePassword,
            X509KeyStorageFlags.MachineKeySet 
 X509KeyStorageFlags.PersistKeySet 
 X509KeyStorageFlags.Exportable);
        var collection = new X509Certificate2Collection();
        collection.Import(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet 
 X509KeyStorageFlags.PersistKeySet 
 X509KeyStorageFlags.Exportable);
        return (certificate, collection);
    }
}

Sortie

PDFsharp Signature de documents PDF numériquement vs IronPDF (Exemple de Code) : Figure 2

Comme vous pouvez le voir ici, bien qu'il ait été possible de créer un champ de signature numérique et d'appliquer le certificat à notre nouveau document, le processus est long, manuel et pas très efficace à mettre en œuvre par rapport à des bibliothèques telles qu'IronPDF.

Ajout d'une signature numérique avec IronPDF

IronPDF offre aux développeurs une méthode concise poursignature numérique Documents PDF.

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
public class Program
{
    static void Main(string[] args)
    {
        // Create PdfSignature object
    var sig = new PdfSignature("IronSoftware.pfx", "your-password");
    // Add granular information
    sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
    sig.TimeStampUrl = "http://timestamp.digicert.com";
    sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 200, 200));
    // Sign and save PDF document
    sig.SignPdfFile("output.pdf");
    }
}
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
public class Program
{
    static void Main(string[] args)
    {
        // Create PdfSignature object
    var sig = new PdfSignature("IronSoftware.pfx", "your-password");
    // Add granular information
    sig.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
    sig.TimeStampUrl = "http://timestamp.digicert.com";
    sig.SignatureImage = new PdfSignatureImage("IronPdf.png", 0, new Rectangle(150, 100, 200, 200));
    // Sign and save PDF document
    sig.SignPdfFile("output.pdf");
    }
}

Sortie

PDFsharp Signer des documents PDF numériquement vs IronPDF (Exemple de code) : Figure 3

Ce code démontre comment signer un document PDF en utilisant la classe PdfSignature d'IronPDF. Le programme crée d'abord un objet PdfSignature, en spécifiant l'emplacement d'un fichier de certificat .pfx et son mot de passe. Il définit ensuite des propriétés de signature supplémentaires, telles que l'algorithme de hachage(SHA256), timestamp URL (http://timestamp.digicert.com)et une image personnalisée pour la signature(IronPdf.png).

Enfin, la méthode SignPdfFile est appelée pour appliquer la signature numérique au document PDF et l'enregistrer sous le nom output.pdf. Ce processus garantit l'intégrité et l'authenticité du PDF en intégrant la signature numérique avec un horodatage et une image visuelle.

PDFSharp

  • Open-source sous licence MIT.
  • Nécessite des bibliothèques externes(par exemple, BouncyCastle)pour des fonctionnalités avancées telles que la signature numérique.

    IronPDF:

  • Licence commercialeavec un prix basé sur les développeurs et les instances de déploiement.
  • Essai gratuitdisponible
  • Gratuit pour une utilisation en développement

Conclusion : IronPDF vs PDFsharp pour les signatures numériques en C

Lors de la comparaison entre IronPDF et PDFsharp pour l'ajoutsignatures numériquesvers des PDFs en C#, les deux bibliothèques offrent des avantages distincts selon vos besoins de projet.

  • IronPDF est idéal pour les développeurs, qu'ils soient développeurs de logiciels indépendants ou qu'ils travaillent pour une entreprise, recherchant une API simple et facile à utiliser pour appliquer des signatures numériques sur des fichiers PDF, et est doté de fonctionnalités modernes. Son intégration transparente avec l'application de signature numérique,Conversion de HTML en PDFet d'autres fonctionnalités PDF en font un excellent choix pour les projets commerciaux qui privilégient la facilité d'utilisation et la mise en œuvre rapide. Avec un support payant et une structure de licence commerciale claire, IronPDF est bien adapté aux entreprises qui nécessitent une solution simple et fiable.
  • PDFsharp excelle dans la création et la manipulation de PDF de base, mais manque des fonctionnalités avancées et du support direct pour les signatures numériques qu'offre IronPDF. Alors que PDFsharp est open-source et gratuit à utiliser, son API est moins intuitive pour travailler avec les signatures numériques comparé à IronPDF, et les développeurs peuvent avoir besoin d'utiliser des solutions supplémentaires ou des bibliothèques tierces pour gérer ces fonctionnalités.

    En résumé,IronPDFest le meilleur choix pour les développeurs cherchant une solution simple et rapide pour les signatures numériques et les tâches PDF associées, notamment dans les environnements commerciaux. PDFsharpest plus adapté aux tâches PDF de base, mais manque de la même facilité d'utilisation et du même ensemble de fonctionnalités pour les signatures numériques, ce qui le rend plus approprié pour des projets plus simples ou ceux nécessitant des personnalisations supplémentaires.

Kannaopat Udonpant
Ingénieur logiciel
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Tout en poursuivant ses études, Kannapat est également devenu membre du Vehicle Robotics Laboratory, qui fait partie du Department of Bioproduction Engineering (département d'ingénierie de la bioproduction). En 2022, il a mis à profit ses compétences en C# pour rejoindre l'équipe d'ingénieurs d'Iron Software, où il se concentre sur IronPDF. Kannapat apprécie son travail car il apprend directement auprès du développeur qui écrit la majeure partie du code utilisé dans IronPDF. Outre l'apprentissage par les pairs, Kannapat apprécie l'aspect social du travail chez Iron Software. Lorsqu'il n'écrit pas de code ou de documentation, Kannapat peut généralement être trouvé en train de jouer sur sa PS5 ou de revoir The Last of Us.
< PRÉCÉDENT
IronPDF vs PDFsharp Conversion PDF-vers-Image (Exemple de Code)
SUIVANT >
Extraction de texte PDF avec PDFsharp vs IronPDF (Exemple)