Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

PDFsharp Signature numérique vs IronPDF (Exemple de Code)

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

Les signatures numériques sont créées à l'aide d'une clé privée, que seul le signataire connaît. Cette clé privée établit une signature numérique unique liée au document lorsqu'il est signé. La signature inclut le nom du signataire, son adresse e-mail et d'autres informations personnelles. Pour confirmer l'authenticité d'un document signé numériquement, le destinataire doit avoir accès à la clé publique du signataire. La légitimité de la signature est vérifiée en la déchiffrant à l'aide de la clé publique.

In this tutorial, we compare how to add digital signatures to PDF documents using PDFSharp and IronPDF. 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 robuste pour .NET offrant des fonctionnalités similaires avec des fonctionnalités avancées supplémentaires.

Ce guide couvre la signature d'un document PDF avec une clé privée et la vérification de la signature, ainsi qu'un exemple de code source pour les deux bibliothèques.

Pourquoi les signatures numériques sont-elles importantes ?

Les signatures numériques assurent l'intégrité des documents et offrent une sécurité robuste. Elles sont couramment utilisées pour les contrats, les accords et d'autres documents légaux.

Principaux avantages :

  • Plus sécurisées et résistantes à la falsification que les signatures traditionnelles.
  • Vérifiées électroniquement, réduisant les efforts de vérification manuelle.
  • Permettent la signature à distance des documents dans le monde entier.
  • Fournissent une plus grande assurance que les signatures traditionnelles.

Vue d'ensemble de PDFsharp

PDFSharp est une bibliothèque C# open-source principalement conçue pour créer et manipuler des documents PDF. Elle est largement utilisée pour les tâches PDF de base, telles que la génération de fichiers PDF simples, l'édition de documents existants et le rendu de graphiques. Cependant, son support natif pour les fonctionnalités avancées comme les signatures numériques est limité, et les développeurs doivent souvent s'appuyer sur des bibliothèques tierces, telles que BouncyCastle, pour intégrer de telles 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 une priorité.

Caractéristiques principales

  • Open-source et gratuit sous la licence MIT.
  • Création et manipulation de PDF basiques.
  • Peut être étendu avec des bibliothèques externes comme BouncyCastle pour les signatures numériques.
  • Manque de support prêt à l'emploi pour des fonctionnalités avancées de PDF telles que la conversion HTML vers PDF et la gestion de formulaires complexes.

Aperçu d'IronPDF

PDFsharp Sign PDF documents Digitally vs IronPDF (Exemple de Code): Figure 1 - image.png

IronPDF est une bibliothèque PDF .NET robuste qui fournit une API simple et puissante pour générer, éditer et manipuler des PDFs. L'une de ses caractéristiques principales est la facilité avec laquelle les développeurs peuvent implémenter des signatures numériques, qui sont essentielles pour vérifier l'authenticité des documents. En plus des signatures numériques, IronPDF prend en charge des fonctionnalités avancées telles que la conversion HTML vers PDF, le filigranage et la 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 les 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 pour la signature numérique et la manipulation de documents.
  • Includes built-in support for HTML-to-PDF format conversion, form handling, and PDF annotations (such as attachment annotations).
  • Intégration transparente avec des fonctionnalités avancées comme l'horodatage, les images de signature visuelles et le chiffrement.

Ajouter 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 offre la possibilité d'ajouter une signature, vous devrez intégrer un outil tiers comme BouncyCastle pour garantir une signature numérique sûre et précise des documents PDF.

Étapes pour ajouter une signature numérique avec PDFsharp

  1. Installez PDFsharp et BouncyCastle via NuGet.
  2. Créez un certificat numérique en utilisant X509Certificate2.
  3. Signez le PDF avec BouncyCastle.

Exemple de Code

using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using BouncyCastleSigner; // Hypothetical namespace for illustration
// Ensure that you have the appropriate namespaces added

class Program
{
    static void Main(string[] args)
    {
        // Create a font for the appearance of the signature
        var font = new XFont("Verdana", 10.0, XFontStyle.Regular);

        // Create a new PDF document
        var document = new PdfDocument();
        var pdfPage = document.AddPage();

        // Prepare graphics for drawing on the PDF page
        var xGraphics = XGraphics.FromPdfPage(pdfPage);
        var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);

        // Add some text to the page
        xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);

        // Define digital signature appearance options
        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()
        };

        // Sign the document using BouncyCastle signer
        var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
            new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);

        // Save the signed document
        document.Save("PdfSharpSignature.pdf");
    }

    static (X509Certificate2, X509Certificate2Collection) GetCertificate()
    {
        // Locate the certificate file and read its data
        var certFolder = "C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security";
        var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
        var rawData = File.ReadAllBytes(pfxFile);

        // Load the certificate using its password (example password)
        var certificatePassword = "Passw0rd";
        var certificate = new X509Certificate2(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

        // Create and return the certificate collection
        var collection = new X509Certificate2Collection();
        collection.Import(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
        return (certificate, collection);
    }
}
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using BouncyCastleSigner; // Hypothetical namespace for illustration
// Ensure that you have the appropriate namespaces added

class Program
{
    static void Main(string[] args)
    {
        // Create a font for the appearance of the signature
        var font = new XFont("Verdana", 10.0, XFontStyle.Regular);

        // Create a new PDF document
        var document = new PdfDocument();
        var pdfPage = document.AddPage();

        // Prepare graphics for drawing on the PDF page
        var xGraphics = XGraphics.FromPdfPage(pdfPage);
        var layoutRectangle = new XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point);

        // Add some text to the page
        xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter);

        // Define digital signature appearance options
        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()
        };

        // Sign the document using BouncyCastle signer
        var pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document,
            new PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options);

        // Save the signed document
        document.Save("PdfSharpSignature.pdf");
    }

    static (X509Certificate2, X509Certificate2Collection) GetCertificate()
    {
        // Locate the certificate file and read its data
        var certFolder = "C:\\Users\\kyess\\AppData\\Roaming\\Adobe\\Acrobat\\DC\\Security";
        var pfxFile = Path.Combine(certFolder, "IronSoftware.pfx");
        var rawData = File.ReadAllBytes(pfxFile);

        // Load the certificate using its password (example password)
        var certificatePassword = "Passw0rd";
        var certificate = new X509Certificate2(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

        // Create and return the certificate collection
        var collection = new X509Certificate2Collection();
        collection.Import(rawData, certificatePassword,
            X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);
        return (certificate, collection);
    }
}
Imports System
Imports System.IO
Imports System.Security.Cryptography.X509Certificates
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf
Imports BouncyCastleSigner ' Hypothetical namespace for illustration
' Ensure that you have the appropriate namespaces added

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Create a font for the appearance of the signature
		Dim font = New XFont("Verdana", 10.0, XFontStyle.Regular)

		' Create a new PDF document
		Dim document = New PdfDocument()
		Dim pdfPage = document.AddPage()

		' Prepare graphics for drawing on the PDF page
		Dim xGraphics = XGraphics.FromPdfPage(pdfPage)
		Dim layoutRectangle = New XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point)

		' Add some text to the page
		xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter)

		' Define digital signature appearance options
		Dim options = New DigitalSignatureOptions With {
			.ContactInfo = "John Doe",
			.Location = "Seattle",
			.Reason = "License Agreement",
			.Rectangle = New XRect(36.0, 700.0, 400.0, 50.0),
			.AppearanceHandler = New SignatureAppearanceHandler()
		}

		' Sign the document using BouncyCastle signer
		Dim pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document, New PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options)

		' Save the signed document
		document.Save("PdfSharpSignature.pdf")
	End Sub

	Private Shared Function GetCertificate() As (X509Certificate2, X509Certificate2Collection)
		' Locate the certificate file and read its data
		Dim certFolder = "C:\Users\kyess\AppData\Roaming\Adobe\Acrobat\DC\Security"
		Dim pfxFile = Path.Combine(certFolder, "IronSoftware.pfx")
		Dim rawData = File.ReadAllBytes(pfxFile)

		' Load the certificate using its password (example password)
		Dim certificatePassword = "Passw0rd"
		Dim certificate = New X509Certificate2(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet Or X509KeyStorageFlags.Exportable)

		' Create and return the certificate collection
		Dim collection = New X509Certificate2Collection()
		collection.Import(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet Or X509KeyStorageFlags.PersistKeySet Or X509KeyStorageFlags.Exportable)
		Return (certificate, collection)
	End Function
End Class
$vbLabelText   $csharpLabel

Sortie

PDFsharp Sign PDF documents Digitally vs IronPDF (Exemple de Code): Figure 2

Comme vous pouvez le voir ici, bien qu'il ait été capable 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.

Ajouter une signature numérique avec IronPDF

IronPDF fournit aux développeurs une méthode concise pour signer numériquement des documents PDF.

using IronPdf;
using System.Security.Cryptography.X509Certificates;

public class Program
{
    static void Main(string[] args)
    {
        // Load the certificate with its password
        var sig = new PdfSignature("IronSoftware.pfx", "your-password");

        // Configure additional signature details
        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 the PDF document
        sig.SignPdfFile("output.pdf");
    }
}
using IronPdf;
using System.Security.Cryptography.X509Certificates;

public class Program
{
    static void Main(string[] args)
    {
        // Load the certificate with its password
        var sig = new PdfSignature("IronSoftware.pfx", "your-password");

        // Configure additional signature details
        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 the PDF document
        sig.SignPdfFile("output.pdf");
    }
}
Imports IronPdf
Imports System.Security.Cryptography.X509Certificates

Public Class Program
	Shared Sub Main(ByVal args() As String)
		' Load the certificate with its password
		Dim sig = New PdfSignature("IronSoftware.pfx", "your-password")

		' Configure additional signature details
		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 the PDF document
		sig.SignPdfFile("output.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie

PDFsharp Sign PDF documents Digitally 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 commence par créer un objet PdfSignature, 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), l'URL d'horodatage, 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 en tant que 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 ex., BouncyCastle) pour des fonctionnalités avancées telles que la signature numérique.

IronPDF :

  • Licence commerciale avec tarification basée sur les développeurs et les instances de déploiement.
  • Essai gratuit disponible
  • Gratuit pour un usage de développement

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

En comparant IronPDF et PDFsharp pour l'ajout de signatures numériques aux PDFs en C#, les deux bibliothèques offrent des avantages distincts en fonction de vos besoins de projet.

  • IronPDF est idéal pour les développeurs, qu'ils soient développeurs logiciels indépendants freelances, ou développeurs travaillant pour une entreprise, cherchant une API simple et facile à utiliser pour appliquer des signatures numériques aux PDFs, et est doté de fonctionnalités modernes. Son intégration transparente avec l'application de signature numérique, la conversion HTML vers PDF et d'autres fonctionnalités PDF en fait un excellent choix pour les projets commerciaux qui privilégient la facilité d'utilisation et la mise en œuvre rapide. Avec support payant et une structure de licence commerciale claire, IronPDF est bien adapté aux entreprises nécessitant une solution simple et fiable.

  • PDFsharp excelle dans la création et la manipulation de PDF basiques mais manque des fonctionnalités avancées et du support direct pour les signatures numériques qu'IronPDF offre. Bien que PDFsharp soit open-source et gratuit à utiliser, son API est moins intuitive pour travailler avec des signatures numériques comparé à IronPDF, et les développeurs peuvent avoir besoin d'employer des solutions additionnelles ou des bibliothèques tierces pour gérer ces fonctionnalités.

En résumé, IronPDF est le meilleur choix pour les développeurs à la recherche d'une solution simple et rapide pour les signatures numériques et les tâches PDF associées, notamment dans des environnements commerciaux. PDFsharp est plus adapté pour les tâches PDF basiques mais manque de la même facilité d'utilisation et 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.

Veuillez noterPDFsharp and BouncyCastle sont des marques déposées de leurs propriétaires respectifs. Ce site n'est pas affilié, approuvé, ou sponsorisé par PDFsharp ou BouncyCastle. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à des fins d'information uniquement et reflètent les informations disponibles publiquement au moment de la rédaction.

Questions Fréquemment Posées

Comment les signatures numériques assurent-elles l'authenticité et l'intégrité des documents PDF ?

Les signatures numériques utilisent des techniques cryptographiques pour vérifier qu'un document PDF n'a pas été altéré après avoir été signé. Elles confirment l'identité du signataire et garantissent que le contenu du document reste inchangé, offrant ainsi sécurité et validité légale.

Quels défis les développeurs pourraient-ils rencontrer lors de l'utilisation de PDFsharp pour ajouter des signatures numériques ?

Lors de l'utilisation de PDFsharp pour ajouter des signatures numériques, les développeurs doivent généralement intégrer des bibliothèques tierces comme BouncyCastle. Cette exigence peut compliquer le processus de mise en œuvre, car les développeurs doivent gérer des dépendances supplémentaires pour créer des certificats numériques et signer des PDF.

Pourquoi un développeur pourrait-il choisir une bibliothèque PDF commerciale plutôt qu'une bibliothèque open-source pour la signature numérique ?

Une bibliothèque PDF commerciale propose des fonctionnalités avancées, un support intégré pour les signatures numériques et une API conviviale. Ces attributs la rendent plus adaptée aux développeurs cherchant une solution rapide et fiable avec un support dédié, notamment dans des projets commerciaux où le temps et l'efficacité sont cruciaux.

Comment peut-on convertir du HTML en PDF dans une application .NET ?

HTML peut être converti en PDF dans une application .NET en utilisant une bibliothèque comme IronPDF, qui propose des méthodes telles que RenderHtmlAsPdf pour transformer directement des chaînes HTML ou des fichiers en documents PDF, en prenant en charge diverses options de style et de script.

Quels sont les avantages d'utiliser IronPDF pour gérer les PDF dans des projets commerciaux ?

IronPDF offre un ensemble complet de fonctionnalités pour la gestion des PDF, y compris les signatures numériques, la conversion HTML-en-PDF et le traitement de formulaires. Son support robuste et son API conviviale le rendent idéal pour les projets commerciaux qui privilégient des fonctionnalités avancées et un déploiement rapide.

Peut-on ajouter un horodatage à une signature numérique PDF en utilisant une bibliothèque .NET ?

Oui, avec une bibliothèque comme IronPDF, vous pouvez ajouter un horodatage à une signature numérique PDF en spécifiant l'URL du serveur d'horodatage dans la configuration de la signature. Cette fonction améliore la fiabilité et la conformité légale du document signé.

Que doit-on considérer lors du choix d'une bibliothèque PDF pour la mise en œuvre de signatures numériques ?

Lors du choix d'une bibliothèque PDF pour les signatures numériques, tenez compte de facteurs tels que la facilité d'utilisation, le support des fonctionnalités avancées, les capacités d'intégration avec des outils tiers, et la disponibilité d'un support client dédié, qui sont souvent plus complets dans les bibliothèques commerciales comme IronPDF.

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

Lire la suite