当前位置:网站首页>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
边栏推荐
- Solve DoS attack production cases
- 287. Find duplicates
- This article discusses the memory layout of objects in the JVM, as well as the principle and application of memory alignment and compression pointer
- 手写一个的在线聊天系统(原理篇1)
- SAP Fiori 应用索引大全工具和 SAP Fiori Tools 的使用介绍
- Xu Xiang's wife Ying Ying responded to the "stock review": she wrote it!
- There is a sound prompt when inserting a USB flash disk under win10 system, but the drive letter is not displayed
- RedisSystemException:WRONGTYPE Operation against a key holding the wrong kind of value
- Shangsilicon Valley JUC high concurrency programming learning notes (3) multi thread lock
- 随着MapReduce job实现去加重,多种输出文件夹
猜你喜欢
随机推荐
Excellent open source fonts for programmers
node の SQLite
DOM Brief
Coco2017 dataset usage (brief introduction)
celery最佳实践
A method of sequentially loading Unity Resources
CRMEB 商城系统如何助力营销?
DOM简要
Some recruitment markets in Shanghai refuse to recruit patients with covid-19 positive
RedisSystemException:WRONGTYPE Operation against a key holding the wrong kind of value
Easy to use PDF to SVG program
Human bone point detection: top-down (part of the theory)
Stm32+hc05 serial port Bluetooth design simple Bluetooth speaker
AcWing 3537. Tree lookup complete binary tree
Some understandings of tree LSTM and DGL code implementation
Wchars, coding, standards and portability - wchars, encodings, standards and portability
STM32+ESP8266+MQTT协议连接OneNet物联网平台
Medical image segmentation
SQL优化问题的简述
根据PPG估算血压利用频谱谱-时间深度神经网络【翻】