Test dans un environnement réel
Test en production sans filigrane.
Fonctionne partout où vous en avez besoin.
Signature de documents PDF, y compris de fichiers PDF. Une signature numérique est une formule mathématique utilisée pour authentifier et garantir l'intégrité d'un document électronique.
Dans ce tutoriel, nous vous montrerons comment ajouter une signature numérique à un PDF en C# à l'aide des logiciels iTextSharp et Les bibliothèques IronPDF.
Avant de nous plonger dans le code, examinons rapidement ce qu'est une signature numérique et pourquoi elle est importante.
Une signature numérique est une formule mathématique utilisée pour authentifier et garantir l'intégrité d'un document électronique.
Il s'agit d'une signature électronique utilisée pour signer numériquement des documents électroniques. Les signatures numériques offrent un niveau de sécurité élevé et sont juridiquement contraignantes dans de nombreux pays.
Lorsqu'un document est signé numériquement, une signature numérique unique est créée et liée au document.
Cette signature est créée à l'aide d'une clé privée, qui n'est connue que du signataire. La clé de signature contient des informations sur le signataire, notamment son nom, son adresse électronique et d'autres détails.
Pour vérifier l'authenticité d'un document signé numériquement, le destinataire doit avoir accès à la clé publique du signataire. Les clés publiques sont utilisées pour décrypter la signature et vérifier son authenticité.
Les signatures numériques sont importantes car elles offrent un niveau élevé de sécurité et garantissent l'intégrité des documents numériques.
Ils sont couramment utilisés dans les situations où des documents doivent être signés, tels que des contrats, des accords et d'autres documents juridiques.
Les signatures numériques présentent plusieurs avantages par rapport aux signatures traditionnelles :
Maintenant que nous savons ce qu'est une signature numérique et pourquoi elle est importante, voyons comment ajouter une signature numérique à un document PDF en C# à l'aide d'iTextSharp et d'IronPDF.
Les signatures numériques sont utilisées pour vérifier l'authenticité des documents électroniques, et les PDF sont un format de données très répandu pour ces documents.
Dans ce tutoriel, nous allons comparer comment ajouter des signatures numériques aux fichiers PDF en utilisant deux bibliothèques C#, iTextSharp et IronPDF.
iTextSharp est une bibliothèque open-source populaire permettant de créer et de manipuler des documents PDF en C#.
Il prend en charge les signatures numériques et est largement utilisé dans les projets .NET. D'autre part, IronPDF est une bibliothèque commerciale qui offre des fonctionnalités similaires pour la manipulation des PDF, y compris les signatures numériques.
Dans ce tutoriel, nous allons montrer comment utiliser ces deux bibliothèques pour ajouter des signatures numériques aux documents PDF, en abordant des concepts tels que la création d'un certificat numérique, la signature d'un document PDF à l'aide d'une clé privée et la vérification de la signature. Nous fournirons également des exemples de code source pour chaque étape.
Avant de commencer, vous devez avoir une connaissance de base de la programmation C# et du Framework .NET.
En outre, les bibliothèques iTextSharp et IronPDF doivent être installées dans votre projet.
Vous pouvez télécharger iTextSharp à partir de NuGet, et IronPDF peut être téléchargé à partir du site web d'IronPDF.
IronPDF est une bibliothèque .NET qui vous permet de créer, d'éditer et de signer des documents PDF en C#. Dans ce guide, nous verrons comment signer un PDF à l'aide d'IronPDF et d'un objet X509Certificate2.
Voici les étapes à suivre pour signer un PDF à l'aide d'IronPDF :
using IronPdf; using IronPdf.Signing; using System.Security.Cryptography.X509Certificates;
using IronPdf; using IronPdf.Signing; using System.Security.Cryptography.X509Certificates;
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
ChromePdfRenderer
. ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("foo");
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("foo");
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("foo")
Dans cet exemple, nous rendons un simple document HTML avec un seul élément d'en-tête.
![](/static-assets/pdf/blog/add-digital-signature-topdf-in-csharp-using-itextsharp/add-digital-signature-topdf-in-csharp-using-itextsharp-6.webp)
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
Dim cert As New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)
Dans cet exemple, nous chargeons le certificat à partir d'un fichier PKCS#12 nommé "IronSoftware.pfx" et nous fournissons le mot de passe "123456". Nous avons également défini X509KeyStorageFlags sur Exportable afin de pouvoir utiliser la clé privée du certificat pour signer le PDF.
![](/static-assets/pdf/blog/add-digital-signature-topdf-in-csharp-using-itextsharp/add-digital-signature-topdf-in-csharp-using-itextsharp-7.webp)
var sig = new PdfSignature(cert);
var sig = new PdfSignature(cert);
Dim sig = New PdfSignature(cert)
Dans cet exemple, nous créons un nouvel objet PdfSignature
en utilisant l'objet certificat que nous avons créé à l'étape 3.
PdfDocument.Sign()en passant l'objet
PdfSignature` que vous avez créé à l'étape 4. pdf.Sign(sig);
pdf.Sign(sig);
pdf.Sign(sig)
pdf.SaveAs("signed.pdf");
pdf.SaveAs("signed.pdf");
pdf.SaveAs("signed.pdf")
Voici le code complet :
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("foo");
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
var sig = new PdfSignature(cert);
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("foo");
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
var sig = new PdfSignature(cert);
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Une fois que nous avons créé un certificat numérique, nous pouvons l'utiliser pour signer un fichier PDF.
Pour signer un fichier PDF, nous devons créer un nouvel objet signature et définir ses propriétés, telles que l'emplacement de la nouvelle signature sur la page et la raison de la signature.
iTextSharp est une bibliothèque open-source populaire permettant de travailler avec des documents PDF en C#. Avec iTextSharp, vous pouvez créer et manipuler des documents PDF, et y ajouter des signatures numériques. Dans cet article, nous allons nous concentrer sur la manière de signer des fichiers PDF à l'aide d'iTextSharp.
Pour commencer, vous devez ajouter une référence au fichier iTextSharp.dll dans votre projet. Vous pouvez télécharger la dernière version d'iTextSharp sur leur site officiel.
Une fois que vous avez ajouté la référence iTextSharp à votre projet, vous pouvez utiliser la bibliothèque PDFSigner pour signer des documents PDF. La bibliothèque PDFSigner contient trois classes : Cert
, MetaData
, et PDFSigner
.
La classe Cert est utilisée pour contenir un certificat et extraire les informations nécessaires à la signature. La classe MetaData
contient les métadonnées du PDF, et la classe PDFSigner
est utilisée pour créer la signature et l'ajouter au document PDF.
La méthode processCert
est utilisée pour lire les certificats numériques et extraire l'entrée de la clé privée. Il construit également la chaîne de certificats numériques si elle est disponible.
La méthode Sign
permet de créer un nouveau document PDF à l'aide de PDFStamper et d'y ajouter la signature. Vous pouvez configurer l'apparence de la signature et y ajouter un motif, un contact et un attribut de localisation. La méthode SetCrypto
est utilisée pour signer le document en utilisant la clé privée et le certificat de chaîne extraits du fichier de certificat. Enfin, la méthode SetVisibleSignature
est utilisée si vous avez besoin d'ajouter une signature visible au document.
Voici un exemple de code qui montre comment signer un fichier PDF à l'aide d'iTextSharp :
using iTextSharp.text.pdf;
using System.IO;
public void SignPDF(string inputPDF, string outputPDF, string certPath, string certPassword, string reason, string contact, string location, bool visible) {
PdfReader reader = new PdfReader(inputPDF);
//Activate MultiSignatures
PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(outputPDF, FileMode.Create, FileAccess.Write), '\0', null, true);
//To disable Multi signatures uncomment this line:
//every new signature will invalidate older ones!
//PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(outputPDF, FileMode.Create, FileAccess.Write), '\0');
MetaData metadata = new MetaData();
metadata.setAuthor("John Doe");
metadata.setTitle("Signed PDF Document");
st.MoreInfo = metadata.getMetaData();
st.XmpMetadata = metadata.getStreamedMetaData();
PdfSignatureAppearance sap = st.SignatureAppearance;
//Read the certificate and extract the private key entry
Cert myCert = new Cert(certPath, certPassword);
sap.SetCrypto(myCert.Akp, myCert.Chain, null, PdfSignatureAppearance.WINCER_SIGNED);
sap.Reason = reason;
sap.Contact = contact;
sap.Location = location;
//Add a visible signature to the document if (visible)
sap.SetVisibleSignature(new iTextSharp.text.Rectangle(100, 100, 250, 150), 1, null);
st.Close();
}
using iTextSharp.text.pdf;
using System.IO;
public void SignPDF(string inputPDF, string outputPDF, string certPath, string certPassword, string reason, string contact, string location, bool visible) {
PdfReader reader = new PdfReader(inputPDF);
//Activate MultiSignatures
PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(outputPDF, FileMode.Create, FileAccess.Write), '\0', null, true);
//To disable Multi signatures uncomment this line:
//every new signature will invalidate older ones!
//PdfStamper st = PdfStamper.CreateSignature(reader, new FileStream(outputPDF, FileMode.Create, FileAccess.Write), '\0');
MetaData metadata = new MetaData();
metadata.setAuthor("John Doe");
metadata.setTitle("Signed PDF Document");
st.MoreInfo = metadata.getMetaData();
st.XmpMetadata = metadata.getStreamedMetaData();
PdfSignatureAppearance sap = st.SignatureAppearance;
//Read the certificate and extract the private key entry
Cert myCert = new Cert(certPath, certPassword);
sap.SetCrypto(myCert.Akp, myCert.Chain, null, PdfSignatureAppearance.WINCER_SIGNED);
sap.Reason = reason;
sap.Contact = contact;
sap.Location = location;
//Add a visible signature to the document if (visible)
sap.SetVisibleSignature(new iTextSharp.text.Rectangle(100, 100, 250, 150), 1, null);
st.Close();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Pour signer un fichier PDF, procédez comme suit :
using IronPdf;
using IronPdf;
Imports IronPdf
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf");
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf");
Dim pdf As PdfDocument = PdfDocument.FromFile("annual_census.pdf")
Dans cet exemple, nous chargeons un fichier PDF nommé "annual_census.pdf" à partir du répertoire actuel. Cette méthode renvoie un objet PdfDocument qui représente le fichier PDF chargé.
Apportez les modifications nécessaires au fichier PDF.
Dans cet exemple, nous supposons que des modifications ont été apportées au fichier PDF.
pdf.SignWithFile("/assets/IronSignature.p12", "password", null, PdfDocument.SignaturePermissions.FormFillingAllowed);
pdf.SignWithFile("/assets/IronSignature.p12", "password", null, PdfDocument.SignaturePermissions.FormFillingAllowed);
pdf.SignWithFile("/assets/IronSignature.p12", "password", Nothing, PdfDocument.SignaturePermissions.FormFillingAllowed)
Dans cet exemple, nous signons le fichier PDF à l'aide d'un fichier PKCS#12 nommé "IronSignature.p12" situé dans le répertoire "/assets". Nous fournissons également le mot de passe du fichier PKCS#12 comme deuxième argument. Le troisième argument spécifie la raison de la signature du fichier PDF, que nous avons laissée nulle. Le quatrième argument spécifie les autorisations de signature, que nous avons définies de manière à n'autoriser que le remplissage de formulaires.
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
Dim pdfWithRevision As PdfDocument = pdf.SaveAsRevision()
Cette méthode crée un nouvel objet PdfDocument qui contient le fichier PDF original et la signature en tant que révision.
pdfWithRevision.SaveAs("annual\_census\_2.pdf");
pdfWithRevision.SaveAs("annual\_census\_2.pdf");
pdfWithRevision.SaveAs("annual\_census\_2.pdf")
Dans cet exemple, nous enregistrons le nom du fichier PDF signé en tant que "annual_census_2.pdf" dans le répertoire actuel.
Voici le code complet :
using IronPdf; PdfDocument pdf = PdfDocument.FromFile("annual\_census.pdf");
// make any necessary edits
pdf.SignWithFile("/assets/IronSignature.p12", "password", null, PdfDocument.SignaturePermissions.FormFillingAllowed);
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
pdfWithRevision.SaveAs("annual\_census_2.pdf");
using IronPdf; PdfDocument pdf = PdfDocument.FromFile("annual\_census.pdf");
// make any necessary edits
pdf.SignWithFile("/assets/IronSignature.p12", "password", null, PdfDocument.SignaturePermissions.FormFillingAllowed);
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
pdfWithRevision.SaveAs("annual\_census_2.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
Une fois qu'un document PDF a été signé, il est important de pouvoir vérifier les signatures afin de s'assurer que le document n'a pas été altéré depuis sa signature.
Pour vérifier la signature numérique d'un PDF à l'aide d'iTextSharp en C#, procédez comme suit :
PdfReader
en lui passant le chemin du document PDF que vous voulez vérifier.GetAcroFields
de l'objet PdfReader
.GetSignatureNames
de l'objet AcroFields
.PdfPKCS7
pour chaque signature en utilisant la méthode GetSignature
de l'objet AcroFields
.Verify
de l'objet PdfPKCS7
.Si la signature est valide, il renvoie true. Dans le cas contraire, il renvoie false.
Voici le code pour vérifier la signature numérique d'un document PDF en utilisant iTextSharp en C# :
public static bool VerifyPdfDigitalSignature(string filePath)
{
bool isValid = false;
try
{
// Create a PdfReader object
PdfReader reader = new PdfReader(filePath);
// Get the AcroFields of the PDF document
AcroFields fields = reader.AcroFields;
// Get the signature names
List<string> names = fields.GetSignatureNames();
// Iterate through the signature names
foreach (string name in names)
{
// Get the PdfPKCS7 object for the signature
PdfPKCS7 pkcs7 = fields.VerifySignature(name);
// Verify the signature
if (pkcs7.Verify())
{
isValid = true;
}
else
{
isValid = false;
}
}
reader.Close();
}
catch (Exception ex)
{
// Handle exception
isValid = false;
}
return isValid;
}
public static bool VerifyPdfDigitalSignature(string filePath)
{
bool isValid = false;
try
{
// Create a PdfReader object
PdfReader reader = new PdfReader(filePath);
// Get the AcroFields of the PDF document
AcroFields fields = reader.AcroFields;
// Get the signature names
List<string> names = fields.GetSignatureNames();
// Iterate through the signature names
foreach (string name in names)
{
// Get the PdfPKCS7 object for the signature
PdfPKCS7 pkcs7 = fields.VerifySignature(name);
// Verify the signature
if (pkcs7.Verify())
{
isValid = true;
}
else
{
isValid = false;
}
}
reader.Close();
}
catch (Exception ex)
{
// Handle exception
isValid = false;
}
return isValid;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Dans le code ci-dessus, la fonction VerifyPdfDigitalSignature
prend en paramètre le chemin du document PDF et renvoie une valeur booléenne indiquant si la signature numérique est valide ou non.
Notez que la fonction vérifie toutes les signatures dans le document PDF. Si vous ne souhaitez vérifier qu'une signature spécifique, vous pouvez passer le nom de la signature en paramètre de la méthode VerifySignature
.
Si un document PDF contient une ou plusieurs signatures numériques, vous pouvez utiliser IronPDF pour vérifier la signature et vous assurer que le document n'a pas été altéré. Voici comment vous pouvez le faire en utilisant la méthode VerifyPdfSignatures
d'IronPDF :
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf");
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf");
Dim pdf As PdfDocument = PdfDocument.FromFile("annual_census.pdf")
bool isValid = pdf.VerifyPdfSignatures();
bool isValid = pdf.VerifyPdfSignatures();
Dim isValid As Boolean = pdf.VerifyPdfSignatures()
Traiter le résultat La méthode VerifyPdfSignatures renvoie une valeur booléenne qui indique si toutes les signatures du document sont valides ou non. Si la valeur est vraie, cela signifie que toutes les signatures sont valides et que le document n'a pas été falsifié. Si la valeur est fausse, cela signifie qu'une ou plusieurs signatures ne sont pas valides et que le document peut avoir été falsifié.
Vous pouvez utiliser ces informations pour prendre les mesures appropriées, telles que l'affichage d'un message à l'intention de l'utilisateur ou l'interdiction de poursuivre le traitement du document.
Voici l'extrait de code complet qui montre comment vérifier toutes les signatures dans un document PDF à l'aide d'IronPDF :
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf");
bool isValid = pdf.VerifyPdfSignatures();
if (isValid)
{
Console.WriteLine("All signatures are valid");
}
else
{
Console.WriteLine("One or more signatures are invalid");
}
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf");
bool isValid = pdf.VerifyPdfSignatures();
if (isValid)
{
Console.WriteLine("All signatures are valid");
}
else
{
Console.WriteLine("One or more signatures are invalid");
}
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("annual_census.pdf")
Private isValid As Boolean = pdf.VerifyPdfSignatures()
If isValid Then
Console.WriteLine("All signatures are valid")
Else
Console.WriteLine("One or more signatures are invalid")
End If
les bibliothèques iTextSharp et IronPDF ont des licences et des modèles de tarification différents, ce qui peut être un facteur à prendre en compte au moment de choisir l'une ou l'autre pour votre projet.
iTextSharp est sous licence Affero General Public License (AGPL)il s'agit d'une licence avec gauche d'auteur qui exige que tout logiciel utilisant iTextSharp soit également placé sous licence AGPL.
Toutefois, il existe également des licences commerciales pour iTextSharp, qui permettent aux développeurs d'utiliser la bibliothèque dans des logiciels propriétaires sans avoir à divulguer leur code source.
Le prix des licences commerciales iTextSharp varie en fonction du nombre de développeurs et d'instances de déploiement.
En revanche, IronPDF est une bibliothèque commerciale dont l'utilisation nécessite une licence payante. La tarification d'IronPDF est basée sur le nombre de développeurs et d'instances de déploiement, comme pour iTextSharp.
Cependant, IronPDF offre également aux utilisateurs une version d'essai gratuite avec des fonctionnalités limitées qui peuvent être utilisées pour des projets non commerciaux.
En termes de la tarificationironPDF peut être une meilleure option pour les petits projets ou les projets à budget limité, car la version d'essai gratuite offre certaines fonctionnalités sans frais.
Cependant, pour des projets plus importants ou des projets avec des exigences de licence spécifiques, iTextSharp peut être une meilleure option en raison de son modèle de double licence et de la prise en charge de l'AGPL.
IronPDF et iTextSharp sont deux bibliothèques populaires permettant de travailler avec des fichiers PDF en C#. Bien que ces deux bibliothèques offrent des fonctionnalités similaires pour travailler avec des documents PDF, il existe certaines différences entre elles que les développeurs doivent prendre en compte lorsqu'ils choisissent la bibliothèque à utiliser.
D'un point de vue technique, IronPDF est une bibliothèque .NET moderne qui offre une API simple et intuitive pour travailler avec des fichiers PDF. Il prend en charge un large éventail de fonctionnalités PDF, notamment le texte, les images, les formulaires et les signatures numériques. IronPDF offre également des fonctions avancées telles que la conversion de HTML en PDF et l'édition de PDF.
En revanche, iTextSharp est une bibliothèque PDF mature dont l'API est plus complexe et dont l'apprentissage peut nécessiter plus d'efforts. Cependant, iTextSharp offre des fonctionnalités avancées telles que la manipulation de PDF de bas niveau et la prise en charge d'un large éventail de normes PDF.
En termes de licence, IronPDF propose un modèle de licence commerciale simple qui permet aux développeurs d'utiliser la bibliothèque dans des logiciels propriétaires sans avoir à divulguer leur code source. Il est ainsi plus facile pour les développeurs d'utiliser IronPDF dans des projets commerciaux sans se soucier de la conformité de la licence. iTextSharp, quant à lui, propose un modèle de licence double avec une licence AGPL gratuite et une licence commerciale pour les logiciels propriétaires. Si les développeurs bénéficient ainsi d'une plus grande souplesse, il peut aussi être plus difficile de s'y retrouver.
D'un point de vue technique, IronPDF offre une API plus moderne et plus intuitive qui peut être plus facile à utiliser pour les développeurs. En outre, IronPDF offre des fonctions avancées telles que la conversion de HTML en PDF et l'édition de PDF, qui peuvent s'avérer utiles pour certains projets. Cependant, iTextSharp offre des fonctionnalités plus avancées telles que la manipulation de PDF de bas niveau et la prise en charge d'un large éventail de normes PDF.
IronPDF est mis à la disposition des utilisateurs pour un montant de essai gratuit et peut être sous licence pour un usage commercial avec son offre Lite à partir de 499 $ seulement.
Enfin, IronPDF propose une promotion spéciale permettant aux développeurs d'acheter les 6 produits Iron Software pour le prix de deux Iron Software produits. Les développeurs peuvent ainsi avoir accès à un large éventail de bibliothèques .NET puissantes à un prix abordable.
9 produits de l'API .NET pour vos documents de bureau