当前位置:网站首页>C#/VB. Net to add text / image watermarks to PDF documents

C#/VB. Net to add text / image watermarks to PDF documents

2022-07-06 18:45:00 InfoQ

When we share on the Internet PDF When you file , It is important to convince people on the other side of the screen that the information released is correct . After all , Any file can be intercepted and modified by an attacker . Watermark with your logo or specific text  PDF  Will prove the authenticity of the documents , And prove its security for everyone who will send it .
We will introduce the application of watermarking in detail in this article PDF Methods . This article will be divided into three parts , I will introduce you in detail how to pass  C#/VB.NET Code will text / Image watermark is added to PDF file . Want to realize this function , Just perform a few simple steps . Please read the following for details .
 
Program environment :
In this test , Introduce... Into the program  Spire.PDF.dll  file .
 
Method  1:
take FreeSpire.PDF for .NET  Download to local , decompression , find  BIN  Under folder  Spire.PDF.dll. And then in  Visual Studio  Open in “ Solution explorer ”, Right click “ quote ”,“ Add reference ”, The local path  BIN  Under folder  dll  Add a reference to the program .
 
Method  2:
adopt  
NuGet
  install . This can be done by  2  Methods of installation :
 
  1.  Can be in  Visual Studio  Open in “ Solution explorer ”, Right click “ quote ”,“ management NuGet  package ”, And then the search “Free Spire.PDF”, Click on “ install ”. Wait for the program installation to complete .
 
  2.  Copy the following to  PM  Console installation .
 
Install-Package FreeSpire.PDF-Version 8.6.0

to PDF Add text watermark to the document

Specific steps :
  • establish  PdfDocument  Object and use PdfDocument.LoadFromFile() Method to load the sample document .
  • use PdfFontBase.MeasureString() Method to set the watermark text and measure the text size .
  • Browse all pages in the document .
  • Use  PdfPageBase.Canvas.TraslateTransform() Method to translate the coordinate system of a page to the specified coordinates , Use  PdfPageBase.Canvas.RotateTransform()  Method rotate the coordinate system counterclockwise  45  degree .
  • Use PdfPageBase.Canvas.DrawString() Method draw watermark text on the page .
  • use PdfDocument.SaveToFile() Method as PDF file .
 
Complete code :
【C#】
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddTextWatermarkToPdf
{
 class Program
 {
 static void Main(string[] args)
 {
 // establish  PdfDocument  object
 PdfDocument pdf = new PdfDocument();

 // load PDF file  
 pdf.LoadFromFile("Sample.pdf");

 // establish PdfTrueTypeFont object
 PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 50f), true);

 // Set watermark text
 string text = "CONFIDENTIAL";

 // Measure text size
 SizeF textSize = font.MeasureString(text);

 // Calculate the value of two offset variables , Used to calculate the translation of the coordinate system
 float offset1 = (float)(textSize.Width * System.Math.Sqrt(2) / 4);
 float offset2 = (float)(textSize.Height * System.Math.Sqrt(2) / 4);

 // Browse all pages in the document .
 foreach (PdfPageBase page in pdf.Pages)
 {
 // Set page transparency
 page.Canvas.SetTransparency(0.8f);

 // Translate the coordinate system by specifying coordinates  page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);

 // Rotate the coordinate system counterclockwise  45  degree
 page.Canvas.RotateTransform(-45);

 // Draw watermark text on the page
 page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);
 }

 // Save the changes as a new file
 pdf.SaveToFile("TextWatermark.pdf");
 }
 }
}
【VB.NET】
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing

Namespace AddTextWatermarkToPdf
 
 Class Program
 
 Private Shared Sub Main(ByVal args() As String)
 ' establish  PdfDocument  object
 Dim pdf As PdfDocument = New PdfDocument
 ' load PDF file
 pdf.LoadFromFile("Sample.pdf")
 ' establish PdfTrueTypeFont  object
 Dim font As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("Arial", 50!), true)
 ' Set watermark text
 Dim text As String = "CONFIDENTIAL"
 ' Measure text size
 Dim textSize As SizeF = font.MeasureString(text)
 ' Calculate the value of two offset variables , Used to calculate the translation 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)
 ' Browse all pages in the document .
 For Each page As PdfPageBase In pdf.Pages
 ' Set page transparency
 page.Canvas.SetTransparency(0.8!)
 ' Translate the coordinate system by specifying coordinates  
 page.Canvas.TranslateTransform(((page.Canvas.Size.Width / 2) _
 - (offset1 - offset2)), ((page.Canvas.Size.Height / 2) _
 + (offset1 - offset2)))
 ' Rotate the coordinate system counterclockwise  45  degree
 page.Canvas.RotateTransform(-45)
 ' Draw watermark text on the page
 page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0)
 Next
 ' Save the changes as a new file
 pdf.SaveToFile("TextWatermark.pdf")
 End Sub
 End Class
End Namespace
design sketch :

towards PDF Add multi line text watermark

Specific steps :
 
  • establish PDF Document combination PdfDocument. LoadFromFile() Method to load the file .
  • Get the first page .
  • Draw text watermark .  Use  PdfCanvas.TranslateTransform()  Method to set the text size .  Use PdfCanvas.RotateTransform() Method to set the font angle . And use  PdfCanvas.DrawString()  Method to draw the text content you want .
  • Use  PdfDocument.SaveToFile()  Method to save the document to a new PDF file .
 
Complete code
:
【C#】
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;


namespace TextWaterMark
{
 class Program
 {
 static void Main(string[] args)
 {
 // establish PDF Document and load the file
 PdfDocument doc = new PdfDocument();
 doc.LoadFromFile("Sample1.pdf");

 // Get the first page
 PdfPageBase page = doc.Pages[0];

 // Draw text watermark
 PdfTilingBrush brush
 = new PdfTilingBrush(new SizeF(page.Canvas.ClientSize.Width / 2, page.Canvas.ClientSize.Height / 3));
 brush.Graphics.SetTransparency(0.3f);
 brush.Graphics.Save();
 brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 2);
 brush.Graphics.RotateTransform(-45);
 brush.Graphics.DrawString("internal use",
 new PdfFont(PdfFontFamily.Helvetica, 24), PdfBrushes.Violet, 0, 0,
 new PdfStringFormat(PdfTextAlignment.Center));
 brush.Graphics.Restore();
 brush.Graphics.SetTransparency(1);
 page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.Canvas.ClientSize));

 // Save as PDF file
 doc.SaveToFile("TextWaterMark1.pdf");
 
 }
 }
}
VB.NET
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics

Namespace TextWaterMark
 
 Class Program
 
 Private Shared Sub Main(ByVal args() As String)
 ' establish PDF Document and load the file
 Dim doc As PdfDocument = New PdfDocument
 doc.LoadFromFile("Sample1.pdf")
 ' Get the first page
 Dim page As PdfPageBase = doc.Pages(0)
 ' Draw text watermark
 Dim brush As PdfTilingBrush = New PdfTilingBrush(New SizeF((page.Canvas.ClientSize.Width / 2), (page.Canvas.ClientSize.Height / 3)))
 brush.Graphics.SetTransparency(0.3!)
 brush.Graphics.Save
 brush.Graphics.TranslateTransform((brush.Size.Width / 2), (brush.Size.Height / 2))
 brush.Graphics.RotateTransform(-45)
 brush.Graphics.DrawString("internal use", New PdfFont(PdfFontFamily.Helvetica, 24), PdfBrushes.Violet, 0, 0, New PdfStringFormat(PdfTextAlignment.Center))
 brush.Graphics.Restore
 brush.Graphics.SetTransparency(1)
 page.Canvas.DrawRectangle(brush, New RectangleF(New PointF(0, 0), page.Canvas.ClientSize))
 ' Save as PDF file
 doc.SaveToFile("TextWaterMark1.pdf")
 End Sub
 End Class
End Namespace
design sketch :

to PDF Add image watermark

Specific steps :
  • Create a PdfDocument  Object and use PdfDocument.LoadFromFile()  Method to load an example PDF  file .
  • Use  Image.FromFile()  Method to load the image .
  • Get the picture size .
  • Cycle through the pages in the document , adopt PdfDocument.Pages()  Property to get the specific page .
  • adopt PdfPageBase.BackgroundImage  Property to set the image as the watermark image of the current page . adopt  PdfPageBase.BackgroundRegion  Property to set the image position and size .
  • Use  PdfDocument.SaveToFile()  Method to save the document to a file .

Complete code
【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 an example PDF  file
 document.LoadFromFile("sample.pdf");

 // Load image
 Image image = Image.FromFile("logo.png");

 // Get the picture size
 int imgWidth = image.Width;
 int imgHeight = image.Height;

 // Browse the pages in the document  
 for (int i = 0; i < document.Pages.Count; i++)
 {
 // Get page width and height
 float pageWidth = document.Pages[i].ActualSize.Width;
 float pageHeight = document.Pages[i].ActualSize.Height;

 // Set background opacity
 document.Pages[i].BackgroudOpacity = 0.3f;

 // Set the image as the watermark image of the current page
 document.Pages[i].BackgroundImage = image;

 // Place the background image in 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 as PDF file
 document.SaveToFile(&quot;AddImageWatermark.pdf&quot;);
 document.Close();
 }
 }
}
VB.NET
Imports Spire.Pdf
Imports System.Drawing

Namespace AddImageWatermark
 
 Class Program
 
 Private Shared Sub Main(ByVal args() As String)
 ' Create a PdfDocument  object
 Dim document As PdfDocument = New PdfDocument
 ' Load an example PDF  file
 document.LoadFromFile(&quot;sample.pdf&quot;)
 ' Load image
 Dim image As Image = Image.FromFile(&quot;logo.png&quot;)
 ' Get the picture size
 Dim imgWidth As Integer = image.Width
 Dim imgHeight As Integer = image.Height
 ' Browse the pages in the document  
 Dim i As Integer = 0
 Do While (i < document.Pages.Count)
 ' Get page width and height
 Dim pageWidth As Single = document.Pages(i).ActualSize.Width
 Dim pageHeight As Single = document.Pages(i).ActualSize.Height
 ' Set background opacity
 document.Pages(i).BackgroudOpacity = 0.3!
 ' Set the image as the watermark image of the current page
 document.Pages(i).BackgroundImage = image
 ' Place the background image in the center of the page
 Dim rect As Rectangle = New Rectangle((CType((pageWidth - imgWidth),Integer) / 2), (CType((pageHeight - imgHeight),Integer) / 2), imgWidth, imgHeight)
 document.Pages(i).BackgroundRegion = rect
 i = (i + 1)
 Loop
 
 ' Save the document as PDF file
 document.SaveToFile(&quot;AddImageWatermark.pdf&quot;)
 document.Close
 End Sub
 End Class
End Namespace
design sketch :

原网站

版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207061040511002.html