using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
PDFsharp Signer des documents PDF numériquement vs IronPDF (Exemple de code)
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
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
Installez PDFsharp et BouncyCastle via NuGet.
Créer un certificat numérique à l'aide de X509Certificate2.
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
Sortie
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");
}
}
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
Sortie
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.
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.
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)
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier