当前位置:网站首页>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
边栏推荐
- 朗坤智慧冲刺科创板:年营收4亿 拟募资7亿
- 44 colleges and universities were selected! Publicity of distributed intelligent computing project list
- win10系统下插入U盘有声音提示却不显示盘符
- 被疫情占据的上半年,你还好么?| 2022年中总结
- AcWing 3537.树查找 完全二叉树
- Penetration test information collection - App information
- TOP命令详解
- 用于远程医疗的无创、无袖带血压测量【翻译】
- 10、 Process management
- STM32+HC05串口蓝牙设计简易的蓝牙音箱
猜你喜欢
The third season of Baidu online AI competition is coming in midsummer, looking for you who love AI!
巨杉数据库首批入选金融信创解决方案!
Nuc11 cheetah Canyon setting U disk startup
CSRF漏洞分析
ORACLE进阶(四)表连接讲解
Visual Studio Code启动时提示“Code安装似乎损坏。请重新安装。”、标题栏显示“不受支持”信息的解决办法
None of the strongest kings in the monitoring industry!
Why does wechat use SQLite to save chat records?
十、进程管理
Estimate blood pressure according to PPG using spectral spectrum time depth neural network [turn]
随机推荐
Echart simple component packaging
使用cpolar建立一个商业网站(1)
CSRF vulnerability analysis
Coco2017 dataset usage (brief introduction)
Visual Studio Code启动时提示“Code安装似乎损坏。请重新安装。”、标题栏显示“不受支持”信息的解决办法
[the 300th weekly match of leetcode]
10、 Process management
celery最佳实践
STM32+MFRC522完成IC卡号读取、密码修改、数据读写
287. Find duplicates
Stm32+esp8266+mqtt protocol connects onenet IOT platform
There is a sound prompt when inserting a USB flash disk under win10 system, but the drive letter is not displayed
同宇新材冲刺深交所:年营收9.47亿 张驰与苏世国为实控人
Unity资源顺序加载的一个方法
The role of applet in industrial Internet
Automatic reservation of air tickets in C language
Use cpolar to build a business website (1)
Xu Xiang's wife Ying Ying responded to the "stock review": she wrote it!
CSRF漏洞分析
朗坤智慧冲刺科创板:年营收4亿 拟募资7亿