COMPARAISON DES PRODUITS

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

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 utilisant PDFSharp et 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 .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.

Principaux avantages :

  • 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 open-source C# 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

PDFsharp Signer des documents PDF numériquement 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, modifier et manipuler des 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 que la conversion HTML en PDF, le filigranage et la gestion des 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 pour la signature numérique et la manipulation de documents.
  • Comprend une prise en charge intégrée pour la conversion de format HTML en PDF, la gestion des formulaires et les annotations PDF (telles que les annotations de pièces jointes).
  • Intégration transparente avec des fonctionnalités avancées telles que l'horodatage, les images de signature visuelle, et le chiffrement.

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);
    }
}
Imports System.Security.Cryptography.X509Certificates
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf.Signatures
Imports BouncyCastleSigner
Imports PdfSharp.Quality
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim font = New XFont("Verdana", 10.0, XFontStyleEx.Regular)
		Dim document = New PdfSharp.Pdf.PdfDocument()
		Dim pdfPage = document.AddPage()
		Dim xGraphics = XGraphics.FromPdfPage(pdfPage)
		Dim layoutRectangle = New XRect(0.0, 0.0, pdfPage.Width.Point, pdfPage.Height.Point)
		xGraphics.DrawString("Signed sample document", font, XBrushes.Black, layoutRectangle, XStringFormats.TopCenter)
		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()
		}
		Dim pdfSignatureHandler = DigitalSignatureHandler.ForDocument(document, New PdfSharp.Snippets.Pdf.BouncyCastleSigner(GetCertificate(), PdfMessageDigestType.SHA256), options)
		document.Save("PdfSharpSignature.pdf")
	End Sub
	Private Shared Function GetCertificate() As (X509Certificate2, X509Certificate2Collection)
		Dim certFolder = IOUtility.GetAssetsPath("C:\Users\kyess\AppData\Roaming\Adobe\Acrobat\DC\Security")
		Dim pfxFile = Path.Combine(certFolder, "IronSoftware.pfx")
		Dim rawData = File.ReadAllBytes(pfxFile)
		' This code is for demonstration only. Do not use password literals for real certificates in source code.
		Dim certificatePassword = "Passw0rd"
		Dim certificate = New X509Certificate2(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet X509KeyStorageFlags.PersistKeySet X509KeyStorageFlags.Exportable)
		Dim collection = New X509Certificate2Collection()
		collection.Import(rawData, certificatePassword, X509KeyStorageFlags.MachineKeySet X509KeyStorageFlags.PersistKeySet X509KeyStorageFlags.Exportable)
		Return (certificate, collection)
	End Function
End Class
$vbLabelText   $csharpLabel

Sortie

Documents PDF signés numériquement avec PDFsharp 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 pour signer numériquement des 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");
    }
}
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
Public Class Program
	Shared Sub Main(ByVal args() As String)
		' Create PdfSignature object
	Dim 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")
	End Sub
End Class
$vbLabelText   $csharpLabel

Sortie

PDFsharp Signer numériquement des documents PDF 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 supplémentaires de signature, telles que l'algorithme de hachage (SHA256), l'URL de l'horodatage (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 commerciale avec tarification basée sur le nombre de développeurs et d'instances de déploiement.
  • Essai gratuit disponible
  • Gratuit pour une utilisation en développement

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

Lors de la comparaison d'IronPDF et PDFsharp pour ajouter des signatures numériques aux PDF en C#, les deux bibliothèques offrent des avantages distincts selon les besoins de votre projet.

  • IronPDF est idéal pour les développeurs, qu'ils soient indépendants en freelance ou qu'ils travaillent pour une entreprise, à la recherche d'une API simple et facile à utiliser pour appliquer des signatures numériques aux PDF, et est doté de fonctionnalités modernes. Son intégration transparente avec l'application de signature numérique, la conversion HTML en PDF et d'autres fonctionnalités PDF en fait un excellent choix pour les projets commerciaux qui privilégient la facilité d'utilisation et une 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 ne propose pas les fonctionnalités avancées et le support direct pour les signatures numériques qu'IronPDF offre. 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é, 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 connexes, surtout dans les environnements commerciaux. PDFsharp est mieux adapté aux tâches PDF de base, mais manque de la même facilité d'utilisation et 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.

Chaknith Bin
Ingénieur logiciel
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.
< PRÉCÉDENT
IronPDF vs PDFsharp Conversion PDF-vers-Image (Exemple de Code)
SUIVANT >
Extraction de texte PDF avec PDFsharp vs IronPDF (Exemple)