当前位置:网站首页>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】
to PDF Add text watermark to the document
- 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 .
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");
}
}
}
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

towards PDF Add multi line text watermark
- 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 .
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");
}
}
}
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

to PDF Add image watermark
- 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 .
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("AddImageWatermark.pdf");
document.Close();
}
}
}
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("sample.pdf")
' Load image
Dim image As Image = Image.FromFile("logo.png")
' 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("AddImageWatermark.pdf")
document.Close
End Sub
End Class
End Namespace

边栏推荐
- AvL树的实现
- Stm32+mfrc522 completes IC card number reading, password modification, data reading and writing
- CSRF vulnerability analysis
- This article discusses the memory layout of objects in the JVM, as well as the principle and application of memory alignment and compression pointer
- 深度循环网络长期血压预测【翻译】
- The role of applet in industrial Internet
- Breadth first traversal of graph
- 手写一个的在线聊天系统(原理篇1)
- RedisSystemException:WRONGTYPE Operation against a key holding the wrong kind of value
- 小程序在产业互联网中的作用
猜你喜欢

44所高校入选!分布式智能计算项目名单公示

巨杉数据库首批入选金融信创解决方案!

MySQL查询请求的执行过程——底层原理

Jushan database was among the first batch of financial information innovation solutions!

Blue Bridge Cup real question: one question with clear code, master three codes

Tree-LSTM的一些理解以及DGL代码实现

44 colleges and universities were selected! Publicity of distributed intelligent computing project list

SQL injection - access injection, access offset injection

Easy to use PDF to SVG program
![[Matlab] Simulink 同一模块的输入输出的变量不能同名](/img/99/adfe50075010916439cd053b8f04c7.png)
[Matlab] Simulink 同一模块的输入输出的变量不能同名
随机推荐
10、 Process management
Self supervised heterogeneous graph neural network with CO comparative learning
Describe the process of key exchange
Reproduce ThinkPHP 2 X Arbitrary Code Execution Vulnerability
[sword finger offer] 60 Points of N dice
阿里云国际版ECS云服务器无法登录宝塔面板控制台
Maixll-Dock 摄像头使用
二叉搜索树
基于ppg和fft神经网络的光学血压估计【翻译】
涂鸦智能在香港双重主板上市:市值112亿港元 年营收3亿美元
Numerical analysis: least squares and ridge regression (pytoch Implementation)
echart简单组件封装
Excellent open source fonts for programmers
SQL优化问题的简述
STM32+ENC28J60+UIP协议栈实现WEB服务器示例
Penetration test information collection - site architecture and construction
根据PPG估算血压利用频谱谱-时间深度神经网络【翻】
Easy to use PDF to SVG program
Collection of penetration test information -- use with nmap and other tools
手写一个的在线聊天系统(原理篇1)