Add a Diagonal Watermark to PDF in C# - TallComponents - PDF Library
Add a Diagonal Watermark to PDF in C#
C# add watermark to pdf Code Sample
With PDFKit.NET 4.0 & PDFKit.NET 5.0 you can create and manipulate PDF documents. Split, append, stamp, encrypt, extract, fill and more.
This code sample shows how to add a diagonal watermark to an existing PDF in C#.
C# add watermark to pdf Code Sample
static void Main(string[] args)
{
using (FileStream sourceFile =
new FileStream("original.pdf", FileMode.Open, FileAccess.Read))
{
// open the document
Document pdf = new Document(sourceFile);
foreach (Page page in pdf.Pages)
{
// stamp each page
addWatermark(page);
}
// save the modified pdf
using (FileStream targetFile =
new FileStream("watermarked.pdf", FileMode.Create, FileAccess.Write))
{
pdf.Write(targetFile);
}
}
}
.NET add watermark to pdf Code Sample
Using sourceFile As New FileStream("..\..\input.pdf", FileMode.Open, FileAccess.Read)
' open the document
Dim pdf As New Document(sourceFile)
For Each page As Page In pdf.Pages
' stamp each page
addWatermark(page)
Next
' save the modified pdf
Using targetFile As New FileStream("..\..\output.pdf", FileMode.Create, FileAccess.Write)
pdf.Write(targetFile)
End Using
End Using
The following method adds the watermark to PDF in C#.
static void addWatermark(Page page)
{
// calculate the page diagonal
double diagonal = Math.Sqrt(page.Height * page.Height + page.Width * page.Width);
// format the text
TextShape watermark = new TextShape();
watermark.Text = "Diagonal watermark";
watermark.Font = Font.CourierBold;
watermark.Pen = new Pen(RgbColor.Red, 2);
watermark.Brush = null;
watermark.FontSize = 1; // recalculated below
// calculate font size so to fit the diagonal of the page - 0.8 is a fuzzy factor
watermark.FontSize *= 0.8 * (diagonal / watermark.MeasuredWidth);
// transform the text so that it runs diagonal across the page
TransformCollection transforms = new TransformCollection();
transforms.Add(new TranslateTransform(0, -0.5 * watermark.MeasuredHeight));
transforms.Add(new TranslateTransform((diagonal - watermark.MeasuredWidth) / 2, 0));
transforms.Add(new RotateTransform(-(180 / Math.PI) * Math.Atan2(page.Height, page.Width)));
watermark.Transform = transforms;
page.Overlay.Add(watermark);
}
Private Sub addWatermark(page As Page)
' calculate the page diagonal
Dim diagonal As Double = Math.Sqrt(page.Height * page.Height + page.Width * page.Width)
' format the text
Dim watermark As New TextShape()
watermark.Text = "Diagonal watermark"
watermark.Font = Font.CourierBold
watermark.Pen = New Pen(RgbColor.Red, 2)
watermark.Brush = Nothing
watermark.FontSize = 1
' recalculated below
' calculate font size so to fit the diagonal of the page - 0.8 is a fuzzy factor
watermark.FontSize *= 0.8 * (diagonal / watermark.MeasuredWidth)
' transform the text so that it runs diagonal across the page
Dim transforms As New TransformCollection()
transforms.Add(New TranslateTransform(0, -0.5 * watermark.MeasuredHeight))
transforms.Add(New TranslateTransform((diagonal - watermark.MeasuredWidth) / 2, 0))
transforms.Add(New RotateTransform(-(180 / Math.PI) * Math.Atan2(page.Height, page.Width)))
watermark.Transform = transforms
page.Overlay.Add(watermark)
End Sub
More C#PDF watermark code samples?
Check out other C# Watermark code samples: