Водяной знак относится к тексту и изображению, размещенным над или под содержимым файла PDF. Обычно он раскрывает специальную информацию о документе, например, об авторе или владельце, а также о том, является ли содержимое конфиденциальным. В этой статье я расскажу, как программно вставить текстовый водяной знак или водяной знак изображения в PDF, используя Free Spire.PDF для .NET с C# и VB.NET.

Добавить ссылки

Способ №1: Скачать Free Spire.PDF и разархивировать пакет где-нибудь на диске, чтобы найти папку BIN. В Spire.PDF есть библиотеки DLL, скомпилированные для нескольких версий .NET Framework, а также для .NET Core и других платформ. Выберите DLL из папки, которая вам точно нужна, и добавьте их все как зависимости в свой проект.

Способ №2: Создайте приложение .NET в своей Visual Studio и установите Free Spire.PDF напрямую через NuGet. Диспетчер пакетов NuGet автоматически установит правильную версию, соответствующую вашему приложению.

Примечание.Бесплатная версия ограничена 10 страницами при загрузке или создании PDF-файла.Чтобы избавиться от ограничения, вам необходимо использовать коммерческую версию. Шпиля.PDF.

Добавить текстовый водяной знак в PDF

Free Spire.PDF не предлагает интерфейс или класс для прямой работы с текстовым водяным знаком в PDF. Нам нужно нарисовать текст на холсте PDF в указанном месте, чтобы имитировать эффект водяного знака. Ниже приведены шаги по добавлению текстового водяного знака в центре каждой страницы под углом 45 градусов.

  • Создайте объект PdfDocument.
  • Загрузите образец PDF-файла с помощью метода PdfDocument.LoadFromFile().
  • Создайте объект PdfTrueTypeFont.
  • Укажите текст водяного знака и измерьте размер текста.
  • Пролистайте все страницы документа.
  • Задайте прозрачность холста для конкретной страницы с помощью метода PdfPageBase.Canvas.SetTransparency().
  • Переведите систему координат с помощью метода PdfPageBase.Canvas.TranslateTransform(), чтобы текстовый водяной знак располагался в центре страницы.
  • Поверните систему координат на 45 градусов против часовой стрелки, используя метод PdfPageBase.Canvas.RotateTransform().
  • Нарисуйте текст водяного знака на определенной странице с помощью метода PdfPageBase.Canvas.DrawString().
  • Сохраните документ в другой файл PDF с помощью метода PdfDocument.SaveToFile().

[C#]

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\Terms of Service.pdf");
            //Create a PdfTrueTypeFont object
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 50f), true);
            //Set the watermark text
            string text = "DRAFT";
            //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("AddTextWatermark.pdf");
        }
    }
}

[VB.NET]

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\Terms of Service.pdf")
 
            'Create a PdfTrueTypeFont object
            Dim font As PdfTrueTypeFont =  New PdfTrueTypeFont(New Font("Arial",50f),True) 
 
            'Set the watermark text
            Dim text As String =  "DRAFT" 
 
            '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("AddTextWatermark.pdf")
        End Sub
    End Class
End Namespace

Добавить водяной знак изображения в PDF

Точно так же нет прямого способа добавить водяной знак изображения в PDF с помощью Free Spire.PDF. Мы могли бы установить фоновое изображение каждой страницы, чтобы имитировать эффект водяного знака изображения. Ниже приведены шаги по добавлению водяного знака изображения в PDF на C# и VB.NET с использованием Free Spire.PDF для .NET.

  • Создайте объект PdfDocument.
  • Загрузите образец PDF-файла с помощью метода PdfDocument.LoadFromFile().
  • Загрузите изображение из файла с помощью метода Image.FromFile() и получите ширину и высоту изображения.
  • Пролистайте все страницы документа.
  • Задайте прозрачность фона конкретной страницы с помощью свойства PdfPageBase.BackgroundOpacity.
  • Установите фоновое изображение конкретной страницы с помощью свойства PdfPageBase.BackgroundImage.
  • Поместите фоновое изображение в центр страницы с помощью свойства PdfPageBase.BackgroundRegion.
  • Сохраните документ в другой файл PDF с помощью метода PdfDocument.SaveToFile().

[C#]

using Spire.Pdf;
using System.Drawing;
namespace AddImageWatermark
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create a PdfDocument object
            PdfDocument document = new PdfDocument();
            //Load a sample PDF document
            document.LoadFromFile(@"C:\Users\Administrator\Desktop\Terms of Service.pdf");
            //Load an image
            Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\logo.jpg");
            //Get the image width and height
            int imgWidth = image.Width;
            int imgHeight = image.Height;
         
            //Loop through the pages
            for (int i = 0; i < document.Pages.Count; i++)
            {
                //Get the page width and height
                float pageWidth = document.Pages[i].ActualSize.Width;
                float pageHeight = document.Pages[i].ActualSize.Height;
                //Set the background opacity
                document.Pages[i].BackgroudOpacity = 0.3f;
                //Set the background image of current page
                document.Pages[i].BackgroundImage = image;
                //Position the background image at the center of the page
                Rectangle rect = new Rectangle((int)(pageWidth - imgWidth) / 2, (int)(pageHeight - imgHeight) / 2, imgWidth, imgHeight);
                document.Pages[i].BackgroundRegion = rect;
            }
            //Save the document to file
            document.SaveToFile("AddImageWatermark.pdf");
            document.Close();
        }
    }
}

[VB.NET]

Imports Spire.Pdf
Imports System.Drawing
 
Namespace AddImageWatermark
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'Create a PdfDocument object
            Dim document As PdfDocument =  New PdfDocument() 
 
            'Load a sample PDF document
            document.LoadFromFile("C:\Users\Administrator\Desktop\Terms of Service.pdf")
 
            'Load an image
            Dim image As Image =  Image.FromFile("C:\Users\Administrator\Desktop\logo.jpg") 
 
            'Get the image width and height
            Dim imgWidth As Integer =  image.Width 
            Dim imgHeight As Integer =  image.Height 
 
            'Loop through the pages
            Dim i As Integer
            For  i = 0 To  document.Pages.Count- 1  Step  i + 1
                'Get the page width and height
                Dim pageWidth As single =  document.Pages(i).ActualSize.Width 
                Dim pageHeight As single =  document.Pages(i).ActualSize.Height 
 
                'Set the background opacity
                document.Pages(i).BackgroudOpacity = 0.3f
 
                'Set the background image of current page
                document.Pages(i).BackgroundImage = image
 
                'Position the background image at the center of the page
                Dim rect As Rectangle =  New Rectangle(CType((pageWidth - imgWidth) / 2,(Integer)(pageHeight - imgHeight) / 2,imgWidth,imgHeight, Integer)) 
                document.Pages(i).BackgroundRegion = rect
            Next
 
            'Save the document to file
            document.SaveToFile("AddImageWatermark.pdf")
            document.Close()
        End Sub
    End Class
End Namespace