Comment Signer Numériquement des Fichiers PDF en C# et VB.NET
Tags: csharp, pdf, signature, dotnet
Published: 2023-06-16 09:11:43

Alors que le monde devient de plus en plus numérique, la nécessité d'une gestion de documents sécurisée et fiable est devenue de plus en plus importante. Une façon de garantir l'authenticité et l'intégrité d'un document est de signer le document avec une signature numérique. Dans cet article, nous explorerons comment **signer numériquement des documents PDF en C# et VB.NET**.

- Signer numériquement un PDF avec du texte en C# et VB.NET
- Signer numériquement un PDF avec une image en C# et VB.NET 
- Signer numériquement un PDF avec du texte et une image en C# et VB.NET

## Bibliothèque .NET pour signer numériquement les PDF
Cet article utilise une bibliothèque PDF .NET appelée [Spire.PDF for .NET](https://www.e-iceblue.com/Introduce/pdf-for-net-introduce.html) pour signer numériquement des documents PDF. Avant de pouvoir commencer à ajouter des signatures numériques aux documents PDF, nous devons installer Spire.PDF for .NET via NuGet en suivant les étapes ci-dessous :

- Ouvrez Visual Studio et créez un nouveau projet.
- Cliquez avec le bouton droit sur le projet dans l'Explorateur de solutions et sélectionnez "Manage NuGet Packages".
- Recherchez "Spire.PDF" et installez le package.
Une fois le package installé, nous pouvons commencer à ajouter des signatures numériques aux documents PDF.

## Signer numériquement un PDF avec du texte en C# et VB.NET
La signature d'un document PDF avec du texte à l'aide de Spire.PDF for .NET est un processus simple. Le code suivant montre comment signer numériquement un document PDF avec du texte en C#:
```csharp
using Spire.Pdf;
using Spire.Pdf.Security;
using System;
using System.Drawing;
using Spire.Pdf.Graphics;

namespace AddTextSignature
{
    class Program
    {
        static void Main(string[] args)
        {
            //Créer un objet PdfDocument
            PdfDocument doc = new PdfDocument();

            //Charger un fichier PDF d'exemple
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");

            //Charger le certificat 
            PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");

            //Créer un objet PdfSignature et spécifier sa position et sa taille  
            PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count-1], cert, "MySignature");     
            RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 340, 150, 290, 100);
            signature.Bounds = rectangleF;
            signature.Certificated = true;

            //Définir le mode graphique pour signer le détail
            signature.GraphicsMode = GraphicMode.SignDetail;

            //Définir le contenu de la signature  
            signature.NameLabel = "Signer:";
            signature.Name = "Gary";
            signature.ContactInfoLabel = "Phone:";
            signature.ContactInfo = "0123456";
            signature.DateLabel = "Date:";
            signature.Date = DateTime.Now;
            signature.LocationInfoLabel = "Location:";
            signature.LocationInfo = "USA";
            signature.ReasonLabel = "Reason:";
            signature.Reason = "I am the author";
            signature.DistinguishedNameLabel = "DN:";
            signature.DistinguishedName = signature.Certificate.IssuerName.Name;

            //Définir la police de la signature  
            signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS",12f,FontStyle.Regular));

            //Définir l'autorisation du document pour interdire les modifications mais permettre le remplissage de formulaire
            signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;

            //Enregistrer dans un fichier  
            doc.SaveToFile("TextSignature.pdf");
            doc.Close();
        }
    }
}
```
Le code suivant montre comment signer numériquement un document PDF avec du texte en VB.NET: 
```vb
Imports Spire.Pdf
Imports Spire.Pdf.Security
Imports System.Drawing
Imports Spire.Pdf.Graphics

Namespace AddTextSignature
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Créer un objet PdfDocument
            Dim doc As PdfDocument = New PdfDocument()

            'Charger un fichier PDF d'exemple
            doc.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")

            'Charger le certificat 
            Dim cert As PdfCertificate = New PdfCertificate("C:\Users\Administrator\Desktop\MyCertificate.pfx", "e-iceblue")

            'Créer un objet PdfSignature et spécifier sa position et sa taille  
            Dim signature As PdfSignature = New PdfSignature(doc, doc.Pages(doc.Pages.Count - 1), cert, "MySignature")
            Dim rectangleF As RectangleF = New RectangleF(doc.Pages(0).ActualSize.Width - 340, 150, 290, 100)
            signature.Bounds = rectangleF
            signature.Certificated = True

            'Définir le mode graphique pour signer le détail
            signature.GraphicsMode = GraphicMode.SignDetail

            'Définir le contenu de la signature  
            signature.NameLabel = "Signer:"
            signature.Name = "Gary"
            signature.ContactInfoLabel = "Phone:"
            signature.ContactInfo = "0123456"
            signature.DateLabel = "Date:"
            signature.[Date] = Date.Now
            signature.LocationInfoLabel = "Location:"
            signature.LocationInfo = "USA"
            signature.ReasonLabel = "Reason:"
            signature.Reason = "I am the author"
            signature.DistinguishedNameLabel = "DN:"
            signature.DistinguishedName = signature.Certificate.IssuerName.Name

            'Définir la police de la signature  
            signature.SignDetailsFont = New PdfTrueTypeFont(New Font("Arial Unicode MS", 12F, FontStyle.Regular))

            'Définir l'autorisation du document pour interdire les modifications mais permettre le remplissage de formulaire
            signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges Or PdfCertificationFlags.AllowFormFill

            'Enregistrer dans un fichier  
            doc.SaveToFile("TextSignature.pdf")
            doc.Close()
        End Sub
    End Class
End Namespace
```

## Signer numériquement un PDF avec une image en C# et VB.NET
En plus de signer un PDF avec du texte, vous pouvez également signer un PDF avec une image à l'aide de Spire.PDF for .NET.
Le code suivant montre comment signer numériquement un PDF avec une image en C#:
```csharp
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Security;
using System.Drawing;

namespace AddImageSignature
{
    class Program
    {
        static void Main(string[] args)
        {
            //Créer un objet PdfDocument
            PdfDocument doc = new PdfDocument();

            //Charger un fichier PDF d'exemple
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");

            //Charger le certificat  
            PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");

            //Créer un objet PdfSignature et spécifier sa position et sa taille  
            PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
            RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 200, 150, 130, 130);
            signature.Bounds = rectangleF;
            signature.Certificated = true;

            //Définir le mode graphique pour signer uniquement l'image
            signature.GraphicsMode = GraphicMode.SignImageOnly;

            //Définir la source de l'image de signature
            signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\verified.png");

            //Définir la police de la signature 
            signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular));

            //Définir l'autorisation du document pour interdire les modifications mais permettre le remplissage de formulaire
            signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;

            //Enregistrer dans un fichier 
            doc.SaveToFile("ImageSignature.pdf");
            doc.Close();
        }
    }
}

```
Le code suivant montre comment signer numériquement un PDF avec une image en VB.NET:
```vb
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Security
Imports System.Drawing

Namespace AddImageSignature
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Créer un objet PdfDocument
            Dim doc As PdfDocument = New PdfDocument()

            'Charger un fichier PDF d'exemple
            doc.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")

            'Charger le certificat  
            Dim cert As PdfCertificate = New PdfCertificate("C:\Users\Administrator\Desktop\MyCertificate.pfx", "e-iceblue")

            'Créer un objet PdfSignature et spécifier sa position et sa taille  
            Dim signature As PdfSignature = New PdfSignature(doc, doc.Pages(doc.Pages.Count - 1), cert, "MySignature")
            Dim rectangleF As RectangleF = New RectangleF(doc.Pages(0).ActualSize.Width - 200, 150, 130, 130)
            signature.Bounds = rectangleF
            signature.Certificated = True

            'Définir le mode graphique pour signer uniquement l'image
            signature.GraphicsMode = GraphicMode.SignImageOnly

            'Définir la source de l'image de signature
            signature.SignImageSource = PdfImage.FromFile("C:\Users\Administrator\Desktop\verified.png")

            'Définir la police de la signature 
            signature.SignDetailsFont = New PdfTrueTypeFont(New Font("Arial Unicode MS", 12F, FontStyle.Regular))

            'Définir l'autorisation du document pour interdire les modifications mais permettre le remplissage de formulaire
            signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges Or PdfCertificationFlags.AllowFormFill

            'Enregistrer dans un fichier 
            doc.SaveToFile("ImageSignature.pdf")
            doc.Close()
        End Sub
    End Class
End Namespace
```

## Signer numériquement un PDF avec du texte et une image en C# et VB.NET
Dans certains cas, vous devrez peut-être signer un PDF avec à la fois du texte et une image.
Le code suivant montre comment signer numériquement un PDF avec du texte et une image en C#:
```csharp
using Spire.Pdf;
using Spire.Pdf.Security;
using System;
using System.Drawing;
using Spire.Pdf.Graphics;

namespace AddTextAndImageSignature
{
    class Program
    {
        static void Main(string[] args)
        {
            //Créer un objet PdfDocument
            PdfDocument doc = new PdfDocument();

            //Charger un fichier PDF d'exemple
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");

            //Charger le certificat  
            PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");

            //Créer un objet PdfSignature et spécifier sa position et sa taille 
            PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
            RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 320, 150, 260, 110);
            signature.Bounds = rectangleF;
            signature.Certificated = true;

            //Définir le mode graphique pour signer l'image et les détails de la signature
            signature.GraphicsMode = GraphicMode.SignImageAndSignDetail;

            //Définir le contenu de la signature 
            signature.NameLabel = "Signer:";
            signature.Name = "Gary";
            signature.ContactInfoLabel = "Phone:";
            signature.ContactInfo = "0123456";
            signature.DateLabel = "Date:";
            signature.Date = DateTime.Now;
            signature.LocationInfoLabel = "Location:";
            signature.LocationInfo = "USA";
            signature.ReasonLabel = "Reason:";
            signature.Reason = "I am the author";
            signature.DistinguishedNameLabel = "DN:";
            signature.DistinguishedName = signature.Certificate.IssuerName.Name;

            //Définir la source de l'image de signature
            signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\handSignature.png");

            //Définir la police de la signature 
            signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular));

            //Définir l'autorisation du document pour interdire les modifications mais permettre le remplissage de formulaire
            signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;

            //Enregistrer dans un fichier  
            doc.SaveToFile("TextAndImageSignature.pdf");
            doc.Close();
        }
    }
}
```
Le code suivant montre comment signer numériquement un PDF avec du texte et une image en VB.NET:
```vb
Imports Spire.Pdf
Imports Spire.Pdf.Security
Imports System.Drawing
Imports Spire.Pdf.Graphics

Namespace AddTextAndImageSignature
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Créer un objet PdfDocument
            Dim doc As PdfDocument = New PdfDocument()

            'Charger un fichier PDF d'exemple
            doc.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")

            'Charger le certificat  
            Dim cert As PdfCertificate = New PdfCertificate("C:\Users\Administrator\Desktop\MyCertificate.pfx", "e-iceblue")

            'Créer un objet PdfSignature et spécifier sa position et sa taille 
            Dim signature As PdfSignature = New PdfSignature(doc, doc.Pages(doc.Pages.Count - 1), cert, "MySignature")
            Dim rectangleF As RectangleF = New RectangleF(doc.Pages(0).ActualSize.Width - 320, 150, 260, 110)
            signature.Bounds = rectangleF
            signature.Certificated = True

            'Définir le mode graphique pour signer l'image et les détails de la signature
            signature.GraphicsMode = GraphicMode.SignImageAndSignDetail

            'Définir le contenu de la signature 
            signature.NameLabel = "Signer:"
            signature.Name = "Gary"
            signature.ContactInfoLabel = "Phone:"
            signature.ContactInfo = "0123456"
            signature.DateLabel = "Date:"
            signature.[Date] = Date.Now
            signature.LocationInfoLabel = "Location:"
            signature.LocationInfo = "USA"
            signature.ReasonLabel = "Reason:"
            signature.Reason = "I am the author"
            signature.DistinguishedNameLabel = "DN:"
            signature.DistinguishedName = signature.Certificate.IssuerName.Name

            'Définir la source de l'image de signature
            signature.SignImageSource = PdfImage.FromFile("C:\Users\Administrator\Desktop\handSignature.png")

            'Définir la police de la signature 
            signature.SignDetailsFont = New PdfTrueTypeFont(New Font("Arial Unicode MS", 12F, FontStyle.Regular))

            'Définir l'autorisation du document pour interdire les modifications mais permettre le remplissage de formulaire
            signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges Or PdfCertificationFlags.AllowFormFill

            'Enregistrer dans un fichier  
            doc.SaveToFile("TextAndImageSignature.pdf")
            doc.Close()
        End Sub
    End Class
End Namespace
```

## Conclusion
Ajouter une signature numérique à un document PDF est une étape importante pour assurer son authenticité et son intégrité. Avec Spire.PDF for .NET, le processus est simple et direct. En suivant les étapes décrites dans cet article, vous pouvez facilement ajouter des signatures numériques à vos documents PDF en utilisant C# ou VB.NET.

## Voir aussi
[Guide de la bibliothèque](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/Spire.PDF-Program-Guide-Content.html) | [Support gratuit](https://www.e-iceblue.com/forum/)