Tabla de contenido
Instalado a través de NuGet
PM> Install-Package Spire.PDF
enlaces relacionados
Para evitar que su documento PDF se use de manera no autorizada, puede marcar el documento con texto o una imagen. En este artículo, aprenderá a programar agregue marcas de agua de texto (marcas de agua de una o varias líneas) a PDF en C# y VB.NET usando Spire.PDF for .NET.
Instalar Spire.PDF for .NET
Para empezar, debe agregar los archivos DLL incluidos en el paquete Spire.PDF for .NET como referencias en su proyecto .NET. Los archivos DLL se pueden descargar desde este enlace o instalado a través de NuGet.
- Package Manager
PM> Install-Package Spire.PDF
Agregar una marca de agua de texto a PDF
Spire.PDF no proporciona una interfaz o una clase para manejar marcas de agua en archivos PDF. Sin embargo, puede dibujar texto como "confidencial", "uso interno" o "borrador" en cada página para imitar el efecto de marca de agua. Los siguientes son los pasos principales para agregar una marca de agua de texto a todas las páginas de un documento PDF.
- Cree un objeto PdfDocument y cargue un documento PDF de muestra utilizando el método PdfDocument.LoadFromFile().
- Cree un objeto PdfTrueTypeFont, especifique el texto de la marca de agua y mida el tamaño del texto con el método PdfFontBase.MeasureString().
- Recorra todas las páginas del documento.
- Traduzca el sistema de coordenadas de una página determinada según las coordenadas especificadas mediante el método PdfPageBase.Canvas.TraslateTransform() y gire el sistema de coordenadas 45 grados en sentido contrario a las agujas del reloj mediante el método PdfPageBase.Canvas.RotateTransform(). Esto asegura que la marca de agua aparecerá en el medio de la página en un ángulo de 45 grados.
- Dibuje el texto de la marca de agua en la página usando el método PdfPageBase.Canvas.DrawString().
- Guarde el documento en un archivo PDF diferente usando el método 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
Agregue marcas de agua de texto de varias líneas a PDF
En ocasiones, es posible que desee agregar más de una línea de marcas de agua de texto a su documento. Para lograr el efecto de marca de agua en mosaico, puede utilizar la clase PdfTilingBrush, que produce un patrón en mosaico que se repite para llenar un área de gráficos. Los siguientes son los pasos principales para agregar marcas de agua de varias líneas a un documento PDF.
- Cree un objeto PdfDocument y cargue un documento PDF de muestra utilizando el método PdfDocument.LoadFromFile().
- Cree un método personalizado InsertMultiLineTextWatermark(PdfPageBase page, String watermarkText, PdfTrueTypeFont font, int rowNum, int columnNum) para agregar marcas de agua de texto de varias líneas a una página PDF. Los parámetros rowNum y columnNum especifican el número de fila y columna de las marcas de agua en mosaico.
- Recorra todas las páginas del documento y llame al método personalizado InsertMultiLineTextWatermark() para aplicar marcas de agua a cada página.
- Guarde el documento en otro archivo usando el método 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
Solicitar una Licencia Temporal
Si desea eliminar el mensaje de evaluación de los documentos generados o deshacerse de las limitaciones de la función, por favor solicitar una licencia de prueba de 30 días para ti.