C#/VB.NET: aggiungi filigrane di testo al PDF

2023-08-24 08:47:46

Installato tramite NuGet

PM> Install-Package Spire.PDF

Link correlati

Per evitare che il tuo documento PDF venga utilizzato in modo non autorizzato, puoi filigranare il documento con testo o un'immagine. In questo articolo imparerai a programmaticamente aggiungere filigrane di testo (filigrane a riga singola e multilinea) a PDF in C# e VB.NET utilizzando Spire.PDF for .NET.

Installa Spire.PDF for .NET

Per cominciare, è necessario aggiungere i file DLL inclusi nel pacchetto Spire.PDF for.NET come riferimenti nel progetto .NET. I file DLL possono essere scaricati da questo link o installato tramite NuGet.

  • Package Manager
PM> Install-Package Spire.PDF 

Aggiungi una filigrana di testo al PDF

Spire.PDF non fornisce un'interfaccia o una classe per gestire le filigrane nei file PDF. Potresti, tuttavia, disegnare testo come "riservato", "uso interno" o "bozza" su ogni pagina per imitare l'effetto filigrana. Di seguito sono riportati i passaggi principali per aggiungere una filigrana di testo a tutte le pagine di un documento PDF.

  • Creare un oggetto PdfDocument e caricare un documento PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
  • Creare un oggetto PdfTrueTypeFont, specificare il testo della filigrana e misurare la dimensione del testo utilizzando il metodo PdfFontBase.MeasureString().
  • Attraversa tutte le pagine del documento.
  • Traduci il sistema di coordinate di una determinata pagina in base alle coordinate specificate utilizzando il metodo PdfPageBase.Canvas.TraslateTransform() e ruota il sistema di coordinate di 45 gradi in senso antiorario utilizzando il metodo PdfPageBase.Canvas.RotateTransform(). Ciò garantisce che la filigrana appaia al centro della pagina con un angolo di 45 gradi.
  • Disegna il testo della filigrana sulla pagina utilizzando il metodo PdfPageBase.Canvas.DrawString().
  • Salvare il documento in un file PDF diverso utilizzando il metodo PdfDocument.SaveToFile().
  • C#
  • VB.NET
using Spire.Pdf;
                using Spire.Pdf.Graphics;
                using System.Drawing;
                
                namespace AddTextWatermarkToPdf
                {
                    class Program
                    {
                        static void Main(string[] args)
                        {
                            //Create a PdfDocument object
                            PdfDocument pdf = new PdfDocument();
                
                            //Load a sample PDF document
                            pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");
                
                            //Create a PdfTrueTypeFont object
                            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 50f), true);
                
                            //Set the watermark text
                            string text = "CONFIDENTIAL";
                
                            //Measure the text size
                            SizeF textSize = font.MeasureString(text);
                
                            //Calculate the values of two offset variables,
                            //which will be used to calculate the translation amount of the coordinate system
                            float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4);
                            float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4);
                
                            //Traverse all the pages in the document
                            foreach (PdfPageBase page in pdf.Pages)
                            {
                                //Set the page transparency
                                page.Canvas.SetTransparency(0.8f);
                
                                //Translate the coordinate system by specified coordinates
                                page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);
                
                                //Rotate the coordinate system 45 degrees counterclockwise
                                page.Canvas.RotateTransform(-45);
                
                                //Draw watermark text on the page
                                page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);
                            }
                
                            //Save the changes to another file
                            pdf.SaveToFile("TextWatermark.pdf");
                        }
                    }
                }
Imports Spire.Pdf
                Imports Spire.Pdf.Graphics
                Imports System.Drawing
                
                Namespace AddTextWatermarkToPdf
                    Class Program
                        Shared  Sub Main(ByVal args() As String)
                            'Create a PdfDocument object
                            Dim pdf As PdfDocument =  New PdfDocument()
                
                            'Load a sample PDF document
                            pdf.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")
                
                            'Create a PdfTrueTypeFont object
                            Dim font As PdfTrueTypeFont =  New PdfTrueTypeFont(New Font("Arial",50f),True)
                
                            'Set the watermark text
                            Dim text As String =  "CONFIDENTIAL"
                
                            'Measure the text size
                            Dim textSize As SizeF =  font.MeasureString(text)
                
                            'Calculate the values of two offset variables,
                            'which will be used to calculate the translation amount of the coordinate system
                            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)
                
                            'Traverse all the pages in the document
                            Dim page As PdfPageBase
                            For Each page In pdf.Pages
                                'Set the page transparency
                                page.Canvas.SetTransparency(0.8f)
                
                                'Translate the coordinate system by specified coordinates
                                page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2)
                
                                'Rotate the coordinate system 45 degrees counterclockwise
                                page.Canvas.RotateTransform(-45)
                
                                'Draw watermark text on the page
                                page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0)
                            Next
                
                            'Save the changes to another file
                            pdf.SaveToFile("TextWatermark.pdf")
                        End Sub
                    End Class
                End Namespace

C#/VB.NET: Add Text Watermarks to PDF

Aggiungi filigrane di testo multilinea al PDF

Ci sono momenti in cui potresti voler aggiungere più di una riga di filigrane di testo al tuo documento. Per ottenere l'effetto filigrana piastrellato, è possibile utilizzare la classe PdfTilingBrush, che produce un motivo piastrellato che viene ripetuto per riempire un'area grafica. Di seguito sono riportati i passaggi principali per aggiungere filigrane multilinea a un documento PDF.

  • Creare un oggetto PdfDocument e caricare un documento PDF di esempio utilizzando il metodo PdfDocument.LoadFromFile().
  • Creare un metodo personalizzato InsertMultiLineTextWatermark(PdfPageBase page, String watermarkText, PdfTrueTypeFont font, int rowNum, int columnNum) per aggiungere filigrane di testo su più righe a una pagina PDF. I parametri rowNum e columnNum specificano il numero di riga e di colonna delle filigrane affiancate.
  • Attraversa tutte le pagine del documento e chiama il metodo personalizzato InsertMultiLineTextWatermark() per applicare filigrane a ogni pagina.
  • Salvare il documento in un altro file utilizzando il metodo PdfDocument.SaveToFile().
  • C#
  • VB.NET
using System;
                using Spire.Pdf;
                using Spire.Pdf.Graphics;
                using System.Drawing;
                
                namespace AddMultiLineTextWatermark
                {
                    class Program
                    {
                        static void Main(string[] args)
                        {
                            //Create a PdfDocument instance
                            PdfDocument pdf = new PdfDocument();
                
                            //Load a sample PDF document
                            pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");
                
                            //Create a PdfTrueTypeFont object
                            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 20f), true);
                
                            //Traverse all the pages
                            for (int i = 0; i < pdf.Pages.Count; i++)
                            {
                                //Call InsertMultiLineTextWatermark() method to add text watermarks to the specified page
                                InsertMultiLineTextWatermark(pdf.Pages[i], "E-ICEBLUE CO LTD", font, 3, 3);
                            }
                
                            //Save the document to another file
                            pdf.SaveToFile("MultiLineTextWatermark.pdf");
                        }
                
                        //Create a custom method to insert multi-line text watermarks to a page
                        static void InsertMultiLineTextWatermark(PdfPageBase page, String watermarkText, PdfTrueTypeFont font, int rowNum, int columnNum)
                        {
                            //Measure the text size
                            SizeF textSize = font.MeasureString(watermarkText);
                
                            //Calculate the values of two offset variables, which will be used to calculate the translation amount of coordinate system
                            float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4);
                            float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4);
                
                            //Create a tile brush
                            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);
                
                            //Draw watermark text on the tile brush
                            brush.Graphics.DrawString(watermarkText, font, PdfBrushes.Violet, 0, 0);
                            brush.Graphics.Restore();
                
                            //Draw a rectangle (that covers the whole page) using the tile brush
                            page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.ActualSize));
                        }
                    }
                }
Imports System
                Imports Spire.Pdf
                Imports Spire.Pdf.Graphics
                Imports System.Drawing
                
                Namespace AddMultiLineTextWatermark
                    Class Program
                        Shared  Sub Main(ByVal args() As String)
                            'Create a PdfDocument instance
                            Dim pdf As PdfDocument =  New PdfDocument()
                
                            'Load a sample PDF document
                            pdf.LoadFromFile("C:\Users\Administrator\Desktop\sample.pdf")
                
                            'Create a PdfTrueTypeFont object
                            Dim font As PdfTrueTypeFont =  New PdfTrueTypeFont(New Font("Arial",20f),True)
                
                            'Traverse all the pages
                            Dim i As Integer
                            For  i = 0 To  pdf.Pages.Count- 1  Step  i + 1
                                'Call InsertMultiLineTextWatermark() method to add text watermarks to the specified page
                                InsertMultiLineTextWatermark(pdf.Pages(i), "E-ICEBLUE CO LTD", font, 3, 3)
                            Next
                
                            'Save the document to another file
                            pdf.SaveToFile("MultiLineTextWatermark.pdf")
                        End Sub
                
                        'Create a custom method to insert multi-line text watermarks to a page
                        Shared  Sub InsertMultiLineTextWatermark(ByVal page As PdfPageBase, ByVal watermarkText As String, ByVal font As PdfTrueTypeFont, ByVal rowNum As Integer, ByVal columnNum As Integer)
                            'Measure the text size
                            Dim textSize As SizeF =  font.MeasureString(watermarkText)
                
                            'Calculate the values of two offset variables, which will be used to calculate the translation amount of coordinate system
                            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)
                
                            'Create a tile brush
                            Dim brush As PdfTilingBrush =  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)
                
                            'Draw watermark text on the tile brush
                            brush.Graphics.DrawString(watermarkText, font, PdfBrushes.Violet, 0, 0)
                            brush.Graphics.Restore()
                
                            'Draw a rectangle (that covers the whole page) using the tile brush
                            page.Canvas.DrawRectangle(brush, New RectangleF(New PointF(0, 0), page.ActualSize))
                        End Sub
                    End Class
                End Namespace

C#/VB.NET: Add Text Watermarks to PDF

Richiedi una licenza temporanea

Se desideri rimuovere il messaggio di valutazione dai documenti generati o eliminare le limitazioni delle funzioni, per favore richiedere una licenza di prova di 30 giorni per te.

Guarda anche