PDFRasterizer.NET 4.0 is now available. Supports .NET Core. Renders pixel-perfectly.

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#.

Pdf Add Watermark

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:

Download PDFKit.NET 4.0
We will send you a download link

  • This field is for validation purposes and should be left unchanged.
Why do we ask your email address?
We send tips that speed up your evaluation
We let you know about bug fixes
You can always unsubscribe with one click
We never share your address with a 3rd party
Thank you for your download

We have sent an email with a download link.