A Developer's Guide to Digitally Signing PDFs with C
Ce guide complet explique aux développeurs C# comment signer numériquement des PDF à l'aide d'IronPDF, en abordant les signatures basées sur des certificats, les tampons visuels et les champs de formulaire interactifs afin de garantir l'authenticité et la sécurité des documents.
L'ajout d'une signature à un document PDF est une exigence courante dans de nombreuses applications, mais le terme " signer " peut avoir différentes significations. Pour certains, il s'agit d'appliquer une signature numérique inviolable à l'aide d'un certificat de sécurité. Pour d'autres, il peut s'agir d'apposer une image de signature manuscrite sur un document ou d'ajouter un champ de formulaire interactif permettant aux utilisateurs de signer électroniquement.
Ce guide fournit aux développeurs C# un guide complet sur la manière d'accomplir toutes ces tâches à l'aide de la bibliothèque IronPDF for .NET. Nous aborderons tous les aspects, de l'application d'une signature numérique sécurisée X509Certificate2 à l'apposition de signatures graphiques et à la création de champs de signature interactifs, afin de garantir que vos documents PDF soient authentiques, sécurisés et professionnels.
Guide de démarrage rapide : signer numériquement un PDF en toute simplicité avec IronPDF
Lancez-vous rapidement avec IronPDF pour signer numériquement vos documents PDF grâce à un processus simple et intuitif. Cet exemple montre comment utiliser un certificat .pfx pour authentifier et signer un fichier PDF, garantissant ainsi l'intégrité et l'authenticité du document. Suivez ces étapes pour intégrer de manière transparente la signature numérique dans votre application.
-
Installez IronPDF avec le Gestionnaire de Packages NuGet
PM > Install-Package IronPdf -
Copiez et exécutez cet extrait de code.
new IronPdf.Signing.PdfSignature("certificate.pfx", "password").SignPdfFile("input.pdf"); -
Déployez pour tester sur votre environnement de production.
Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit
Workflow minimal (5 étapes)
- Installez la bibliothèque IronPDF for .NET.
- Appliquer une signature numérique à l'aide d'un
X509Certificate2objet. - Ajoutez une image pour représenter la signature numérique.
- Apposez une signature graphique ou manuscrite sur un fichier PDF.
- Ajoutez un champ de formulaire de signature interactif pour la signature électronique.
Comment appliquer une signature numérique à un PDF à l'aide d'un certificat ?
Vous pouvez apposer une signature numérique sur un document PDF à l'aide d'un fichier de certificat numérique (tel que .pfx ou .p12) afin de garantir l'authenticité et l'intégrité du document. Ce processus garantit que le document n'a pas été modifié depuis sa signature. Pour un aperçu complet des fonctionnalités de signature numérique, consultez notre guide complet sur les signatures numériques.
IronPDF fournit une API simple à cet effet, prenant en charge plusieurs méthodes pour appliquer une signature numérique. Le cœur de cette fonctionnalité s'articule autour de la classe PdfSignature, qui encapsule le certificat et toutes les métadonnées associées à la signature.
| Méthode de signature | Description |
|---|---|
Signer |
Signe un PDF à l'aide d'un objet `PdfSignature` que vous créez et configurez. |
SignWithFile |
Signe un PDF à l'aide d'un fichier de certificat de signature numérique (.pfx ou .p12) situé sur le disque. |
SignWithStore |
Signe un PDF à l'aide d'une signature numérique provenant du magasin de certificats de votre ordinateur, identifiée par son identifiant d'empreinte digitale. |
Utilisation d'un objet X509Certificate2
Pour un contrôle maximal, vous pouvez créer un objet X509Certificate2 à partir de votre fichier de certificat. IronPDF est entièrement conforme à la norme X509Certificate2, offrant une méthode robuste et sécurisée pour la mise en œuvre de la signature numérique. Lors de la création de l'objet certificat, assurez-vous que X509KeyStorageFlags est défini sur Exportable, car cela est requis par les API cryptographiques sous-jacentes. Consultez des exemples pratiques de signatures numériques dans notre référentiel de code.
Install-Package IronPdf
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create a new PDF from an HTML string for demonstration.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Signed Document</h1><p>This document has been digitally signed.</p>");
// Load the certificate from a .pfx file with its password.
// The X509KeyStorageFlags.Exportable flag is crucial for allowing the private key to be used in the signing process.
var cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create a PdfSignature object using the loaded certificate.
var signature = new PdfSignature(cert);
// Apply the signature to the PDF document.
pdf.Sign(signature);
// Save the securely signed PDF document.
pdf.SaveAs("Signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create a new PDF from an HTML string for demonstration.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Signed Document</h1><p>This document has been digitally signed.</p>");
// Load the certificate from a .pfx file with its password.
// The X509KeyStorageFlags.Exportable flag is crucial for allowing the private key to be used in the signing process.
var cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create a PdfSignature object using the loaded certificate.
var signature = new PdfSignature(cert);
// Apply the signature to the PDF document.
pdf.Sign(signature);
// Save the securely signed PDF document.
pdf.SaveAs("Signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
' Create a new PDF from an HTML string for demonstration.
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderHtmlAsPdf("<h1>Signed Document</h1><p>This document has been digitally signed.</p>")
' Load the certificate from a .pfx file with its password.
' The X509KeyStorageFlags.Exportable flag is crucial for allowing the private key to be used in the signing process.
Private cert = New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)
' Create a PdfSignature object using the loaded certificate.
Private signature = New PdfSignature(cert)
' Apply the signature to the PDF document.
pdf.Sign(signature)
' Save the securely signed PDF document.
pdf.SaveAs("Signed.pdf")
Le code ci-dessus génère d'abord un simple fichier PDF. Elle charge ensuite un fichier de certificat .pfx dans un objet X509Certificate2. Cet objet, qui représente l'identité numérique, est transmis au constructeur PdfSignature. Enfin, la méthode pdf.Sign applique cette signature au document avant de l'enregistrer. For more information on the X509Certificate2 class, you can refer to the official Microsoft documentation.
Ajouter des détails précis à une signature numérique
Une signature numérique peut contenir plus que le simple certificat ; Vous pouvez intégrer des métadonnées riches pour fournir du contexte sur la signature. Cela inclut le lieu de signature, le motif, les coordonnées et un horodatage sécurisé provenant d'une autorité de confiance. Vous pouvez également définir et modifier les métadonnées pour ajouter des propriétés supplémentaires au document.
L'ajout de ces détails améliore la piste d'audit du document et fournit aux vérificateurs des informations précieuses. IronPDF prend également en charge les serveurs d'horodatage qui utilisent les algorithmes de hachage modernes SHA256 et SHA512.
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using System;
// Load an existing PDF document to be signed.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create a PdfSignature object directly from the certificate file and password.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Add detailed metadata to the signature for a comprehensive audit trail.
// These properties enhance the signature's credibility and provide context
signature.SignatureDate = DateTime.Now;
signature.SigningContact = "legal@ironsoftware.com";
signature.SigningLocation = "Chicago, USA";
signature.SigningReason = "Contractual Agreement";
// Add a secure timestamp from a trusted Time Stamp Authority (TSA).
// This provides cryptographic proof of the signing time.
signature.TimeStampUrl = new Uri("[http://timestamp.digicert.com](http://timestamp.digicert.com)");
signature.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
// Apply a visual appearance to the signature. (More on this in the next section)
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, new Rectangle(350, 750, 200, 100));
// Sign the PDF document with the configured signature object.
pdf.Sign(signature);
// Save the final, signed PDF document.
pdf.SaveAs("DetailedSignature.pdf");
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using System;
// Load an existing PDF document to be signed.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create a PdfSignature object directly from the certificate file and password.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Add detailed metadata to the signature for a comprehensive audit trail.
// These properties enhance the signature's credibility and provide context
signature.SignatureDate = DateTime.Now;
signature.SigningContact = "legal@ironsoftware.com";
signature.SigningLocation = "Chicago, USA";
signature.SigningReason = "Contractual Agreement";
// Add a secure timestamp from a trusted Time Stamp Authority (TSA).
// This provides cryptographic proof of the signing time.
signature.TimeStampUrl = new Uri("[http://timestamp.digicert.com](http://timestamp.digicert.com)");
signature.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256;
// Apply a visual appearance to the signature. (More on this in the next section)
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, new Rectangle(350, 750, 200, 100));
// Sign the PDF document with the configured signature object.
pdf.Sign(signature);
// Save the final, signed PDF document.
pdf.SaveAs("DetailedSignature.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports IronSoftware.Drawing
Imports System
' Load an existing PDF document to be signed.
Dim pdf = PdfDocument.FromFile("invoice.pdf")
' Create a PdfSignature object directly from the certificate file and password.
Dim signature = New PdfSignature("IronSoftware.pfx", "123456")
' Add detailed metadata to the signature for a comprehensive audit trail.
' These properties enhance the signature's credibility and provide context
signature.SignatureDate = DateTime.Now
signature.SigningContact = "legal@ironsoftware.com"
signature.SigningLocation = "Chicago, USA"
signature.SigningReason = "Contractual Agreement"
' Add a secure timestamp from a trusted Time Stamp Authority (TSA).
' This provides cryptographic proof of the signing time.
signature.TimeStampUrl = New Uri("http://timestamp.digicert.com")
signature.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
' Apply a visual appearance to the signature. (More on this in the next section)
signature.SignatureImage = New PdfSignatureImage("assets/visual-signature.png", 0, New Rectangle(350, 750, 200, 100))
' Sign the PDF document with the configured signature object.
pdf.Sign(signature)
' Save the final, signed PDF document.
pdf.SaveAs("DetailedSignature.pdf")
Vous remarquerez peut-être une icône d'avertissement dans certains lecteurs PDF si le certificat de signature ne se trouve pas dans le magasin de certificats de confiance du système. Pour obtenir une coche verte, le certificat doit être ajouté aux identités de confiance de l'utilisateur.
Comment puis-je ajouter une représentation visuelle à une signature numérique ?
Bien qu'une signature numérique soit intégrée de manière cryptographique dans le PDF, il est souvent utile d'en avoir une représentation visuelle sur la page. Il peut s'agir d'un logo d'entreprise, d'une image de signature manuscrite ou d'autres éléments graphiques. IronPDF facilite l'ajout d'une image à un objet PdfSignature.
Vous pouvez charger une image à partir d'un fichier ou d'un flux et la positionner avec précision sur n'importe quelle page du PDF. Les formats d'image pris en charge incluent PNG, JPEG, GIF, BMP, TIFF et WebP. Cette technique est similaire à la manière dont on pourrait apposer du texte et des images sur des documents PDF.
using IronPdf.Signing;
using IronSoftware.Drawing;
// This example demonstrates various ways to add a visual image to a PDF signature.
// Create a PdfSignature object.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Define the position and size for the signature image on the first page (index 0).
// Rectangle parameters: x position, y position, width, height
var signatureRectangle = new Rectangle(350, 750, 200, 100);
// Option 1: Set the SignatureImage property directly.
// This is the most straightforward approach
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, signatureRectangle);
// Option 2: Use the LoadSignatureImageFromFile method.
// This method provides the same functionality with a different syntax
signature.LoadSignatureImageFromFile("assets/visual-signature.png", 0, signatureRectangle);
// Option 3: Load an image from a stream. This is useful for images generated in memory.
// Perfect for scenarios where images are retrieved from databases or web services
AnyBitmap image = AnyBitmap.FromFile("assets/visual-signature.png");
using (var imageStream = image.ToStream())
{
signature.LoadSignatureImageFromStream(imageStream, 0, signatureRectangle);
}
// After configuring the signature image, apply it to a PDF.
var pdf = PdfDocument.FromFile("invoice.pdf");
pdf.Sign(signature);
pdf.SaveAs("VisualSignature.pdf");
using IronPdf.Signing;
using IronSoftware.Drawing;
// This example demonstrates various ways to add a visual image to a PDF signature.
// Create a PdfSignature object.
var signature = new PdfSignature("IronSoftware.pfx", "123456");
// Define the position and size for the signature image on the first page (index 0).
// Rectangle parameters: x position, y position, width, height
var signatureRectangle = new Rectangle(350, 750, 200, 100);
// Option 1: Set the SignatureImage property directly.
// This is the most straightforward approach
signature.SignatureImage = new PdfSignatureImage("assets/visual-signature.png", 0, signatureRectangle);
// Option 2: Use the LoadSignatureImageFromFile method.
// This method provides the same functionality with a different syntax
signature.LoadSignatureImageFromFile("assets/visual-signature.png", 0, signatureRectangle);
// Option 3: Load an image from a stream. This is useful for images generated in memory.
// Perfect for scenarios where images are retrieved from databases or web services
AnyBitmap image = AnyBitmap.FromFile("assets/visual-signature.png");
using (var imageStream = image.ToStream())
{
signature.LoadSignatureImageFromStream(imageStream, 0, signatureRectangle);
}
// After configuring the signature image, apply it to a PDF.
var pdf = PdfDocument.FromFile("invoice.pdf");
pdf.Sign(signature);
pdf.SaveAs("VisualSignature.pdf");
Imports IronPdf.Signing
Imports IronSoftware.Drawing
' This example demonstrates various ways to add a visual image to a PDF signature.
' Create a PdfSignature object.
Dim signature As New PdfSignature("IronSoftware.pfx", "123456")
' Define the position and size for the signature image on the first page (index 0).
' Rectangle parameters: x position, y position, width, height
Dim signatureRectangle As New Rectangle(350, 750, 200, 100)
' Option 1: Set the SignatureImage property directly.
' This is the most straightforward approach
signature.SignatureImage = New PdfSignatureImage("assets/visual-signature.png", 0, signatureRectangle)
' Option 2: Use the LoadSignatureImageFromFile method.
' This method provides the same functionality with a different syntax
signature.LoadSignatureImageFromFile("assets/visual-signature.png", 0, signatureRectangle)
' Option 3: Load an image from a stream. This is useful for images generated in memory.
' Perfect for scenarios where images are retrieved from databases or web services
Dim image As AnyBitmap = AnyBitmap.FromFile("assets/visual-signature.png")
Using imageStream = image.ToStream()
signature.LoadSignatureImageFromStream(imageStream, 0, signatureRectangle)
End Using
' After configuring the signature image, apply it to a PDF.
Dim pdf As PdfDocument = PdfDocument.FromFile("invoice.pdf")
pdf.Sign(signature)
pdf.SaveAs("VisualSignature.pdf")
Ce code présente trois méthodes équivalentes pour ajouter un composant visuel à une signature numérique. Que vous disposiez d'une image sur disque ou en mémoire, vous pouvez facilement l'apposer sur le PDF dans le cadre du processus de signature. Cela comble le fossé entre la sécurité cryptographique invisible et la validation visible des documents.
Comment puis-je contrôler les autorisations d'accès aux documents après la signature ?
Lorsque vous signez un document, vous souhaiterez peut-être préciser quelles modifications, le cas échéant, sont autorisées par la suite. Par exemple, vous pouvez souhaiter verrouiller complètement le document ou autoriser uniquement les utilisateurs à remplir les champs du formulaire. IronPdf vous permet de définir ces autorisations à l'aide de l'énumération SignaturePermissions. Pour un contrôle des autorisations plus avancé, consultez notre guide sur la configuration des mots de passe et des autorisations pour les PDF.
La configuration des autorisations de signature est un élément clé de la gestion du cycle de vie d'un document. Elle garantit que l'intégrité du document est préservée conformément à vos règles après l'application de votre signature. Si un utilisateur effectue une action non autorisée, la signature sera invalidée.
| `SignaturePermissions` Membre | Définition |
|---|---|
| `Aucune modification autorisée` | Aucune modification d'aucune sorte n'est autorisée. Le document est verrouillé. |
| `FormFillingAllowed` | Seuls le remplissage des champs de formulaire existants et la signature sont autorisés. |
| `AnnotationsAndFormFillingAllowed` | Permet de remplir des formulaires, de les signer et de créer ou modifier des annotations. |
Économisation et signature d'une révision spécifique d'un PDF
Les fichiers PDF peuvent stocker un historique des modifications, à l'instar d'un système de contrôle de version. C'est ce qu'on appelle l'enregistrement incrémental. Lorsque vous signez un PDF, la signature s'applique à une révision spécifique du document. Ceci est crucial pour les workflows dans lesquels un document passe par plusieurs étapes de validation. Pour en savoir plus sur la gestion de l'historique des révisions des PDF, consultez notre guide détaillé.
Dans l'exemple suivant, nous chargeons un PDF, apportons des modifications, puis signons la version actuelle tout en n'autorisant que le remplissage de formulaires comme modification future. Nous utilisons SaveAsRevision pour enregistrer l'état actuel dans l'historique du document avant de sauvegarder le fichier.
GetRevision
La compréhension des enregistrements incrémentiels est essentielle pour les flux de travail PDF avancés. Alors qu'une simple visionneuse peut se contenter d'afficher la dernière version, un outil comme Adobe Acrobat peut révéler l'historique complet des révisions, en indiquant qui a signé quelle version et quelles modifications ont été apportées entre les signatures. IronPDF vous offre un contrôle programmatique total sur ce processus.
Pour les entreprises gérant des flux de travail documentaires complexes qui exigent un niveau élevé de sécurité et de conformité, une solution complète peut s'avérer nécessaire. Iron Software propose Iron Suite, qui comprend IronPDF pour la signature et la manipulation, ainsi que d'autres bibliothèques pour un large éventail de tâches de traitement de documents, le tout disponible moyennant un paiement unique.
Comment puis-je gérer et vérifier les signatures entre les révisions ?
Un document PDF peut comporter plusieurs signatures appliquées à ses différentes révisions. IronPDF fournit des outils permettant de gérer efficacement cet historique.
- Revenir à une révision précédente : vous pouvez rétablir un document à un état antérieur à l'aide de la méthode
RollBackToRevision. Cela supprimera toutes les modifications et signatures effectuées après cette révision. - Vérifier toutes les signatures : la méthode
VerifyAllSignaturesvérifie la validité de toutes les signatures dans toutes les révisions du document. Elle renvoieSignatureStatus.Validuniquement si toutes les signatures sont valides et qu'aucune modification non autorisée n'a été apportée. - Supprimer les signatures : la méthode
RemoveSignaturessupprime toutes les signatures numériques de chaque révision du document, créant ainsi une version propre et non signée.
// Load a PDF with a complex signature history.
var pdf = PdfDocument.FromFile("multi_signed_report.pdf");
// Verify all signatures across all revisions.
// This ensures document integrity throughout its entire history
bool allSignaturesValid = pdf.VerifySignatures();
Console.WriteLine($"All signatures are valid: {allSignaturesValid}");
// Roll back to the first revision (index 0).
// Useful for reviewing the original document state
if (pdf.RevisionCount > 1)
{
PdfDocument firstRevision = pdf.GetRevision(0);
firstRevision.SaveAs("report_first_revision.pdf");
}
// Create a completely unsigned version of the document.
// This removes all digital signatures while preserving content
pdf.RemoveSignatures();
pdf.SaveAs("report_unsigned.pdf");
// Load a PDF with a complex signature history.
var pdf = PdfDocument.FromFile("multi_signed_report.pdf");
// Verify all signatures across all revisions.
// This ensures document integrity throughout its entire history
bool allSignaturesValid = pdf.VerifySignatures();
Console.WriteLine($"All signatures are valid: {allSignaturesValid}");
// Roll back to the first revision (index 0).
// Useful for reviewing the original document state
if (pdf.RevisionCount > 1)
{
PdfDocument firstRevision = pdf.GetRevision(0);
firstRevision.SaveAs("report_first_revision.pdf");
}
// Create a completely unsigned version of the document.
// This removes all digital signatures while preserving content
pdf.RemoveSignatures();
pdf.SaveAs("report_unsigned.pdf");
Imports System
' Load a PDF with a complex signature history.
Dim pdf = PdfDocument.FromFile("multi_signed_report.pdf")
' Verify all signatures across all revisions.
' This ensures document integrity throughout its entire history
Dim allSignaturesValid As Boolean = pdf.VerifySignatures()
Console.WriteLine($"All signatures are valid: {allSignaturesValid}")
' Roll back to the first revision (index 0).
' Useful for reviewing the original document state
If pdf.RevisionCount > 1 Then
Dim firstRevision As PdfDocument = pdf.GetRevision(0)
firstRevision.SaveAs("report_first_revision.pdf")
End If
' Create a completely unsigned version of the document.
' This removes all digital signatures while preserving content
pdf.RemoveSignatures()
pdf.SaveAs("report_unsigned.pdf")
Comment apposer une signature manuscrite sur un PDF ?
Parfois, vous n'avez pas besoin de la sécurité cryptographique d'une signature numérique, mais souhaitez simplement apposer une signature électronique visuelle, comme une signature manuscrite numérisée. On parle souvent de " estampillage " dans ce contexte. IronPDF peut le faire en utilisant ses fonctionnalités Watermark ou Stamp. Pour des options de filigranage plus avancées, consultez notre guide sur les filigranes personnalisés.
Commençons par un exemple de facture au format PDF et une image .png d'une signature manuscrite.
VerifySignatures
Le PDF de la facture originale avant apposition de la signature.
Voici l'image de signature que nous allons utiliser :
Exemple d'image d'une signature manuscrite.
Le code suivant utilise la propriété SignatureImage pour apposer cette image dans le coin inférieur droit du PDF.
using IronPdf.Editing;
// Load the existing PDF document.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create an HtmlStamp containing our signature image.
// HtmlStamp allows us to position HTML content precisely on the page
var signatureStamp = new HtmlStamp("<img src='assets/signature.png'/>")
{
// Configure the stamp's position and appearance.
VerticalAlignment = VerticalAlignment.Bottom,
HorizontalAlignment = HorizontalAlignment.Right,
Margin = 10, // Add some space from the edge.
Opacity = 90 // Make it slightly transparent for a more authentic look.
};
// Apply the stamp to all pages of the PDF.
// You can also specify specific page numbers if needed
pdf.ApplyStamp(signatureStamp);
// Save the modified PDF document.
pdf.SaveAs("official_invoice.pdf");
using IronPdf.Editing;
// Load the existing PDF document.
var pdf = PdfDocument.FromFile("invoice.pdf");
// Create an HtmlStamp containing our signature image.
// HtmlStamp allows us to position HTML content precisely on the page
var signatureStamp = new HtmlStamp("<img src='assets/signature.png'/>")
{
// Configure the stamp's position and appearance.
VerticalAlignment = VerticalAlignment.Bottom,
HorizontalAlignment = HorizontalAlignment.Right,
Margin = 10, // Add some space from the edge.
Opacity = 90 // Make it slightly transparent for a more authentic look.
};
// Apply the stamp to all pages of the PDF.
// You can also specify specific page numbers if needed
pdf.ApplyStamp(signatureStamp);
// Save the modified PDF document.
pdf.SaveAs("official_invoice.pdf");
Imports IronPdf.Editing
' Load the existing PDF document.
Dim pdf = PdfDocument.FromFile("invoice.pdf")
' Create an HtmlStamp containing our signature image.
' HtmlStamp allows us to position HTML content precisely on the page
Dim signatureStamp = New HtmlStamp("<img src='assets/signature.png'/>") With {
' Configure the stamp's position and appearance.
.VerticalAlignment = VerticalAlignment.Bottom,
.HorizontalAlignment = HorizontalAlignment.Right,
.Margin = 10, ' Add some space from the edge.
.Opacity = 90 ' Make it slightly transparent for a more authentic look.
}
' Apply the stamp to all pages of the PDF.
' You can also specify specific page numbers if needed
pdf.ApplyStamp(signatureStamp)
' Save the modified PDF document.
pdf.SaveAs("official_invoice.pdf")
À quoi ressemble le PDF estampillé ?
Une fois le code exécuté, l'image de la signature est apposée sur le document, créant ainsi une facture signée visuellement.
Le PDF final avec l'image de la signature manuscrite apposée dans le coin inférieur droit.
Comment ajouter un champ de signature interactif à un PDF ?
Pour les documents devant être signés par un utilisateur final dans un lecteur PDF tel qu'Adobe Acrobat, vous pouvez ajouter un champ de formulaire de signature interactif. Cela crée une zone vide cliquable qui invite l'utilisateur à appliquer sa propre signature numérique. Pour un guide complet sur les formulaires PDF, consultez notre tutoriel sur la création de formulaires PDF.
Vous pouvez créer un SignatureFormField et l'ajouter à la collection de formulaires du PDF. Vous disposez d'un contrôle précis sur son emplacement et sa taille sur la page. Cela est particulièrement utile pour les documents nécessitant plusieurs signatures ou lorsque vous devez recueillir des signatures auprès de tiers.
true``RemoveSignatures
using IronPdf.Forms;
using IronSoftware.Drawing;
// Create a new PDF to add the signature field to.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Please Sign Below</h1>");
// Define the properties for the signature form field.
string fieldName = "ClientSignature"; // Unique identifier for the field
int pageIndex = 0; // Add to the first page (zero-indexed)
var fieldRect = new Rectangle(50, 200, 300, 100); // Position: (x, y), Size: (width, height)
// Create the SignatureFormField object.
// This creates an interactive field that users can click to sign
var signatureField = new SignatureFormField(fieldName, pageIndex, fieldRect);
// Add the signature field to the PDF's form.
pdf.Form.Add(signatureField);
// Save the PDF with the new interactive signature field.
pdf.SaveAs("interactive_signature.pdf");
using IronPdf.Forms;
using IronSoftware.Drawing;
// Create a new PDF to add the signature field to.
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Please Sign Below</h1>");
// Define the properties for the signature form field.
string fieldName = "ClientSignature"; // Unique identifier for the field
int pageIndex = 0; // Add to the first page (zero-indexed)
var fieldRect = new Rectangle(50, 200, 300, 100); // Position: (x, y), Size: (width, height)
// Create the SignatureFormField object.
// This creates an interactive field that users can click to sign
var signatureField = new SignatureFormField(fieldName, pageIndex, fieldRect);
// Add the signature field to the PDF's form.
pdf.Form.Add(signatureField);
// Save the PDF with the new interactive signature field.
pdf.SaveAs("interactive_signature.pdf");
Imports IronPdf.Forms
Imports IronSoftware.Drawing
' Create a new PDF to add the signature field to.
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Please Sign Below</h1>")
' Define the properties for the signature form field.
Dim fieldName As String = "ClientSignature" ' Unique identifier for the field
Dim pageIndex As Integer = 0 ' Add to the first page (zero-indexed)
Dim fieldRect As New Rectangle(50, 200, 300, 100) ' Position: (x, y), Size: (width, height)
' Create the SignatureFormField object.
' This creates an interactive field that users can click to sign
Dim signatureField As New SignatureFormField(fieldName, pageIndex, fieldRect)
' Add the signature field to the PDF's form.
pdf.Form.Add(signatureField)
' Save the PDF with the new interactive signature field.
pdf.SaveAs("interactive_signature.pdf")
Lorsqu'un utilisateur ouvre ce PDF, il verra un champ cliquable lui permettant de finaliser le processus de signature à l'aide de son propre identifiant numérique. Pour en savoir plus sur la création et la gestion de formulaires interactifs, consultez notre guide pratique sur la création de formulaires PDF.
Un champ de signature interactif non signé ajouté par programmation à un document PDF.
Comment récupérer le nom du signataire à partir de signatures vérifiées ?
Pour obtenir le nom commun du propriétaire du certificat qui a apposé une signature, nous pouvons utiliser la classe VerifiedSignature pour accéder à la propriété SignerName. Vous trouverez ci-dessous un extrait de code illustrant comment procéder.
:path=/static-assets/pdf/content-code-examples/how-to/signing-find-signer-name.cs
using IronPdf;
using System;
// Import the Signed PDF report
var pdf = PdfDocument.FromFile("multi_signed_report.pdf");
// Using GetVerifiedSignatures() obtain a list of `VerifiedSignature` objects from the PDF
pdf.GetVerifiedSignatures().ForEach(signature =>
{
// Print out the SignerName of each `VerifiedSignature` object
Console.WriteLine($"SignatureName: {signature.SignerName}");
});
Imports IronPdf
Imports System
' Import the Signed PDF report
Dim pdf = PdfDocument.FromFile("multi_signed_report.pdf")
' Using GetVerifiedSignatures() obtain a list of `VerifiedSignature` objects from the PDF
pdf.GetVerifiedSignatures().ForEach(Sub(signature)
' Print out the SignerName of each `VerifiedSignature` object
Console.WriteLine($"SignatureName: {signature.SignerName}")
End Sub)
Après avoir importé le fichier PDF signé, nous utilisons la méthode GetSignatures(...) pour récupérer une liste d'objets VerifiedSignature dans le rapport et imprimer le SignerName pour chaque signature.
GetVerifiedSignatures``SignerName
Veuillez noter que cette valeur est extraite du nom distinctif du sujet (SubjectDN) du certificat et renverra null si le champ CN n'est pas présent.
Quelles sont les prochaines étapes pour la signature de PDF avec IronPDF ?
Ce guide a démontré les capacités puissantes et flexibles d'IronPDF en matière de signature de PDF. Que vous ayez besoin d'appliquer des signatures numériques sécurisées avec des métadonnées détaillées, de gérer les révisions de documents, d'apposer des signatures visuelles ou de créer des formulaires interactifs, IronPDF fournit une API complète et conviviale pour les développeurs afin de mener à bien ces tâches.
Pour en savoir plus, vous pouvez télécharger la bibliothèque IronPDF for .NET et obtenir une Licence d'essai gratuite afin de tester toutes ses fonctionnalités dans vos projets. Pour des techniques plus avancées de manipulation de documents, notamment l'ajout d'annotations et l'utilisation des champs de formulaire, consultez notre documentation complète et nos tutoriels.
Prêt à découvrir ce que vous pouvez faire d'autre ? Consultez notre page de tutoriels ici : Signer et sécuriser des PDF
Questions Fréquemment Posées
Comment signer numériquement un PDF à l'aide d'un certificat en C# ?
Avec IronPDF, vous pouvez signer numériquement un PDF en une seule ligne de code à l'aide de la classe PdfSignature. Il suffit de créer un nouvel objet PdfSignature avec votre fichier de certificat (.pfx ou .p12) et votre mot de passe, puis d'appeler la méthode SignPdfFile(). Par exemple : new IronPdf.Signing.PdfSignature("certificate.pfx", "password").SignPdfFile("input.pdf"). Cette méthode applique une signature numérique infalsifiable à l'aide de votre certificat X5092 pour garantir l'authenticité du document.
Quels sont les types de signatures PDF pris en charge ?
IronPDF prend en charge trois principaux types de signatures PDF : 1) les signatures numériques utilisant des certificats X509Certificate2 pour l'authentification et l'inviolabilité, 2) les tampons de signature visuelle qui ajoutent des images de signature graphique ou manuscrite aux documents, et 3) les champs de formulaire de signature interactive qui permettent aux utilisateurs de signer électroniquement les PDF. Chaque type de signature répond à des besoins différents en matière de sécurité des documents et de flux de travail.
Quels formats de certificats peuvent être utilisés pour la signature numérique ?
IronPDF prend en charge les formats de certificats numériques courants, notamment les fichiers .pfx (Personal Information Exchange) et .p12. Ces fichiers de certificat contiennent à la fois la clé publique et la clé privée nécessaires à la signature numérique. La classe PdfSignature d'IronPDF peut fonctionner avec n'importe quel objet X509Certificate2, ce qui offre une certaine souplesse dans la manière dont vous chargez et gérez vos certificats de signature.
Puis-je ajouter une représentation visuelle à ma signature numérique ?
Oui, IronPDF vous permet d'ajouter des éléments visuels à vos signatures numériques. Vous pouvez inclure une représentation graphique telle qu'une image de signature manuscrite, un logo d'entreprise ou un cachet personnalisé à côté de la signature cryptographique. Cela permet de combiner la sécurité des certificats numériques avec une confirmation visuelle, ce qui rend les documents signés à la fois sûrs et présentables d'un point de vue professionnel.
Comment créer un champ de signature interactif pour que les utilisateurs puissent signer électroniquement ?
IronPDF vous permet d'ajouter des champs de formulaire de signature interactive aux documents PDF. Ces champs permettent aux utilisateurs de signer électroniquement les documents en cliquant et en dessinant leur signature ou en téléchargeant une image de signature. Cette fonction est idéale pour créer des documents qui nécessitent une collecte de signatures, tels que des contrats ou des formulaires qui doivent être signés par plusieurs parties.
La signature d'un PDF garantit-elle l'intégrité du document ?
Oui, lorsque vous signez numériquement un PDF à l'aide d'IronPDF avec un certificat X5092, cela crée un sceau inviolable qui garantit l'intégrité du document. La signature numérique garantit que le document n'a pas été modifié depuis sa signature. Toute modification apportée au PDF après la signature invalidera la signature, ce qui alertera les destinataires que le document a pu être compromis.

