Comment ajouter des filigranes de texte à une ou plusieurs lignes dans un fichier PDF avec C# et VB.NET
Tags: csharp, pdf, watermark, dotnet
Published: 2023-08-04 07:54:20

L'ajout de filigranes de texte à vos documents PDF peut être un outil précieux pour améliorer votre image de marque, renforcer la sécurité ou fournir des informations supplémentaires à vos fichiers. Vous pouvez ajouter un filigrane de texte d'une seule ligne ou de plusieurs lignes à votre document PDF. Dans cet article, nous explorerons comment réaliser ces deux tâches une par une en utilisant C# et VB.NET.

## Installer la bibliothèque requise
Pour ajouter des filigranes de texte à un document PDF, cet article utilisera [Free Spire.PDF for .NET](https://www.e-iceblue.com/Introduce/free-pdf-component.html), une bibliothèque facile à utiliser pour créer et manipuler des fichiers PDF dans des applications .NET.

Avant de commencer, vous devrez importer le fichier DLL de la bibliothèque dans votre application en tant que référence. Vous pouvez le faire en installant la bibliothèque via NuGet en suivant ces étapes :

1. Ouvrez la **Package Manager Console**.
2. Exécutez cette commande : **Install-Package FreeSpire.PDF**

## Ajouter des filigranes de texte à une ou plusieurs lignes dans un fichier PDF avec C# et VB.NET
Après avoir installé la bibliothèque, vous pouvez l'utiliser pour ajouter des filigranes à des documents PDF facilement dans votre application C# ou VB.NET.

**Ajouter un filigrane de texte d'une seule ligne**

L'exemple suivant montre comment ajouter un filigrane de texte d'une seule ligne à un fichier PDF en C# :
```csharp
using Spire.Pdf; 
using Spire.Pdf.Graphics; 
using System.Drawing; 
 
namespace AddTextWatermarkToPdf 
{ 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            // Créer un objet PdfDocument 
            PdfDocument pdf = new PdfDocument(); 
 
            // Charger un document PDF d'exemple 
            pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf"); 
 
            // Créer un objet PdfTrueTypeFont 
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 50f), true); 
 
            // Définir le texte du filigrane 
            string text = "CONFIDENTIEL"; 
 
            // Mesurer la taille du texte 
            SizeF textSize = font.MeasureString(text); 
 
            // Calculer les valeurs des deux variables de décalage, 
            // qui seront utilisées pour calculer la quantité de translation du système de coordonnées 
            float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4); 
            float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4); 
 
            // Parcourir toutes les pages du document 
            foreach (PdfPageBase page in pdf.Pages) 
            { 
                // Définir la transparence de la page 
                page.Canvas.SetTransparency(0.8f); 
 
                // Traduire le système de coordonnées par les coordonnées spécifiées 
                page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2); 
 
                // Faire pivoter le système de coordonnées de 45 degrés dans le sens antihoraire 
                page.Canvas.RotateTransform(-45); 
 
                // Dessiner le texte du filigrane sur la page 
                page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0); 
            } 
 
            // Enregistrer les modifications dans un autre fichier 
            pdf.SaveToFile("TextWatermark.pdf"); 
        } 
    } 
} 
```
L'exemple suivant montre comment ajouter un filigrane de texte d'une seule ligne à un fichier PDF en VB.NET :
```vb
Imports Spire.Pdf 
Imports Spire.Pdf.Graphics 
Imports System.Drawing 
 
Namespace AddTextWatermarkToPdf 
    Class Program 
        Shared Sub Main(ByVal args() As String) 
            ' Créer un objet PdfDocument 
            Dim pdf As PdfDocument = New PdfDocument() 
 
            ' Charger un document PDF d'exemple 
            pdf.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf") 
 
            ' Créer un objet PdfTrueTypeFont 
            Dim font As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("Arial", 50f), True) 
 
            ' Définir le texte du filigrane 
            Dim text As String = "CONFIDENTIEL" 
 
            ' Mesurer la taille du texte 
            Dim textSize As SizeF = font.MeasureString(text) 
 
            ' Calculer les valeurs des deux variables de décalage, 
            ' qui seront utilisées pour calculer la quantité de translation du système de coordonnées 
            Dim offset1 As Single = CType((textSize.Width * System.Math.Sqrt(2) / 4), Single) 
            Dim offset2 As Single = CType((textSize.Height * System.Math.Sqrt(2) / 4), Single) 
 
            ' Parcourir toutes les pages du document 
            For Each page As PdfPageBase In pdf.Pages 
                ' Définir la transparence de la page 
                page.Canvas.SetTransparency(0.8f) 
 
                ' Traduire le système de coordonnées par les coordonnées spécifiées 
                page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2) 
 
                ' Faire pivoter le système de coordonnées de 45 degrés dans le sens antihoraire 
                page.Canvas.RotateTransform(-45) 
 
                ' Dessiner le texte du filigrane sur la page 
                page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0) 
            Next 
 
            ' Enregistrer les modifications dans un autre fichier 
            pdf.SaveToFile("TextWatermark.pdf") 
        End Sub 
    End Class 
End Namespace 
```

**Ajouter un filigrane de texte à plusieurs lignes**

L'exemple suivant montre comment ajouter un filigrane de texte à plusieurs lignes à un fichier PDF en C# :
```csharp
using System; 
using Spire.Pdf; 
using Spire.Pdf.Graphics; 
using System.Drawing; 
 
namespace AddMultiLineTextWatermark 
{ 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            // Créer une instance de PdfDocument 
            PdfDocument pdf = new PdfDocument(); 
 
            // Charger un document PDF d'exemple 
            pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf"); 
 
            // Créer un objet PdfTrueTypeFont 
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 20f), true); 
 
            // Parcourir toutes les pages 
            for (int i = 0; i < pdf.Pages.Count; i++) 
            { 
                // Appeler la méthode InsertMultiLineTextWatermark() pour ajouter des filigranes de texte à la page spécifiée 
                InsertMultiLineTextWatermark(pdf.Pages[i], "E-ICEBLUE CO LTD", font, 3, 3); 
            } 
 
            // Enregistrer le document dans un autre fichier 
            pdf.SaveToFile("MultiLineTextWatermark.pdf"); 
        } 
 
        // Créer une méthode personnalisée pour insérer des filigranes de texte sur plusieurs lignes dans une page 
        static void InsertMultiLineTextWatermark(PdfPageBase page, string watermarkText, PdfTrueTypeFont font, int rowNum, int columnNum) 
        { 
            // Mesurer la taille du texte 
            SizeF textSize = font.MeasureString(watermarkText); 
 
            // Calculer les valeurs des deux variables de décalage, 
            // qui seront utilisées pour calculer la quantité de translation du système de coordonnées 
            float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4); 
            float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4); 
 
            // Créer un pinceau de mosaïque 
            PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.ActualSize.Width / columnNum, page.ActualSize.Height / rowNum)); 
            brush.Graphics.SetTransparency(0.3f); 
            brush.Graphics.Save(); 
            brush.Graphics.TranslateTransform(brush.Size.Width / 2 - offset1 - offset2, brush.Size.Height / 2 + offset1 - offset2); 
            brush.Graphics.RotateTransform(-45); 
 
            // Dessiner le texte du filigrane sur le pinceau de mosaïque 
            brush.Graphics.DrawString(watermarkText, font, PdfBrushes.Violet, 0, 0); 
            brush.Graphics.Restore(); 
 
            // Dessiner un rectangle (qui recouvre toute la page) en utilisant le pinceau de mosaïque 
            page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.ActualSize)); 
        } 
    } 
}
``` 
L'exemple suivant montre comment ajouter un filigrane de texte à plusieurs lignes à un fichier PDF en VB.NET :
```csharp
using System; 
using Spire.Pdf; 
using Spire.Pdf.Graphics; 
using System.Drawing; 
 
namespace AddMultiLineTextWatermark 
{ 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            // Créer une instance de PdfDocument 
            PdfDocument pdf = new PdfDocument(); 
 
            // Charger un document PDF d'exemple 
            pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf"); 
 
            // Créer un objet PdfTrueTypeFont 
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 20f), true); 
 
            // Parcourir toutes les pages 
            for (int i = 0; i < pdf.Pages.Count; i++) 
            { 
                // Appeler la méthode InsertMultiLineTextWatermark() pour ajouter des filigranes de texte à la page spécifiée 
                InsertMultiLineTextWatermark(pdf.Pages[i], "E-ICEBLUE CO LTD", font, 3, 3); 
            } 
 
            // Enregistrer le document dans un autre fichier 
            pdf.SaveToFile("MultiLineTextWatermark.pdf"); 
        } 
 
        // Créer une méthode personnalisée pour insérer des filigranes de texte sur plusieurs lignes dans une page 
        static void InsertMultiLineTextWatermark(PdfPageBase page, string watermarkText, PdfTrueTypeFont font, int rowNum, int columnNum) 
        { 
            // Mesurer la taille du texte 
            SizeF textSize = font.MeasureString(watermarkText); 
 
            // Calculer les valeurs des deux variables de décalage, 
            // qui seront utilisées pour calculer la quantité de translation du système de coordonnées 
            float offset1 = (float)(textSize.Width * Math.Sqrt(2) / 4); 
            float offset2 = (float)(textSize.Height * Math.Sqrt(2) / 4); 
 
            // Créer un pinceau de mosaïque 
            PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.ActualSize.Width / columnNum, page.ActualSize.Height / rowNum)); 
            brush.Graphics.SetTransparency(0.3f); 
            brush.Graphics.Save(); 
            brush.Graphics.TranslateTransform(brush.Size.Width / 2 - offset1 - offset2, brush.Size.Height / 2 + offset1 - offset2); 
            brush.Graphics.RotateTransform(-45); 
 
            // Dessiner le texte du filigrane sur le pinceau de mosaïque 
            brush.Graphics.DrawString(watermarkText, font, PdfBrushes.Violet, 0, 0); 
            brush.Graphics.Restore(); 
 
            // Dessiner un rectangle (qui recouvre toute la page) en utilisant le pinceau de mosaïque 
            page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.ActualSize)); 
        } 
    } 
} 
```

## Sujets connexes

- [C#/VB.NET : Ajouter des filigranes d'image à un fichier PDF](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/Watermark/How-to-resize-the-PDF-image-watermark-and-set-its-location-in-C.html)
- [C#/VB.NET : Ajouter ou supprimer des pièces jointes dans un fichier PDF](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/Add-PDF-Attachments-on-.NET.html)
- [C#/VB.NET : Créer, remplir ou supprimer des formulaires modifiables dans un fichier PDF](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/C-/VB.NET-Create-FormField-in-PDF.html)
- [C#/VB.NET : Ajouter un en-tête à un document PDF existant](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/Header-and-Footer/Add-Header-to-Existing-PDF-in-C-VB.NET.html)
- [C#/VB.NET : Ajouter un pied de page à un document PDF existant](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/Header-and-Footer/Add-Footer-to-Existing-PDF-in-C-VB.NET.html)