DEV Community

IronSoftware
IronSoftware

Posted on

Add Watermark to PDF in C# (.NET Guide)

Watermarks protect documents and establish branding. Add text overlays like "CONFIDENTIAL" or image logos to PDFs with a single line of code using HTML and CSS for complete styling control.

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var pdf = new PdfDocument("contract.pdf");
pdf.ApplyWatermark("<h1 style='color:red;'>DRAFT</h1>");
pdf.SaveAs("watermarked.pdf");
Enter fullscreen mode Exit fullscreen mode

IronPDF's watermark feature accepts HTML strings, giving you full access to CSS styling for fonts, colors, opacity, and positioning.

What Is a PDF Watermark?

A watermark is a semi-transparent overlay on PDF pages. Common uses include:

  • Branding: Company logos on reports
  • Security: "CONFIDENTIAL" or "INTERNAL USE ONLY" labels
  • Status indicators: "DRAFT", "APPROVED", "SAMPLE"
  • Copyright protection: Photographer watermarks on proofs

Unlike stamps that sit on top of content, watermarks typically appear behind or blend with the document content.

How Do I Add a Text Watermark?

Use the ApplyWatermark method with HTML:

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Financial Report Q4</h1><p>Revenue: $1.2M</p>");

// Add text watermark with styling
pdf.ApplyWatermark("<h1 style='color:gray; font-size:72px;'>CONFIDENTIAL</h1>");
pdf.SaveAs("confidential-report.pdf");
Enter fullscreen mode Exit fullscreen mode

The HTML string supports any valid CSS—fonts, colors, sizes, and transforms.

How Do I Control Watermark Opacity?

Adjust transparency with the opacity parameter:

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var pdf = new PdfDocument("report.pdf");

// 50% opacity (default)
pdf.ApplyWatermark("<h1>DRAFT</h1>", opacity: 50);

// Subtle watermark at 20% opacity
pdf.ApplyWatermark("<h1>SAMPLE</h1>", opacity: 20);

// Bold watermark at 80% opacity
pdf.ApplyWatermark("<h1>DO NOT COPY</h1>", opacity: 80);

pdf.SaveAs("output.pdf");
Enter fullscreen mode Exit fullscreen mode

Lower opacity values make the watermark more subtle, allowing document content to remain readable.

How Do I Rotate the Watermark?

Diagonal watermarks are common for security:

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var pdf = new PdfDocument("contract.pdf");

// Rotate 45 degrees
pdf.ApplyWatermark(
    "<h1 style='color:red;'>VOID</h1>",
    rotation: -45,
    opacity: 30
);

pdf.SaveAs("voided-contract.pdf");
Enter fullscreen mode Exit fullscreen mode

Rotation values are in degrees. Negative values rotate counter-clockwise.

How Do I Position the Watermark?

IronPDF uses a 3x3 grid for watermark placement:

using IronPdf;
using IronPdf.Editing;
// Install via NuGet: Install-Package IronPdf

var pdf = new PdfDocument("document.pdf");

// Center of page (default)
pdf.ApplyWatermark("<h1>DRAFT</h1>",
    verticalAlignment: VerticalAlignment.Middle,
    horizontalAlignment: HorizontalAlignment.Center);

// Top-right corner
pdf.ApplyWatermark("<img src='logo.png' />",
    verticalAlignment: VerticalAlignment.Top,
    horizontalAlignment: HorizontalAlignment.Right);

// Bottom-left corner
pdf.ApplyWatermark("<p>Page footer text</p>",
    verticalAlignment: VerticalAlignment.Bottom,
    horizontalAlignment: HorizontalAlignment.Left);

pdf.SaveAs("positioned-watermark.pdf");
Enter fullscreen mode Exit fullscreen mode

The 3x3 grid gives you nine possible positions: top-left, top-center, top-right, middle-left, center, middle-right, bottom-left, bottom-center, and bottom-right.

How Do I Add an Image Watermark?

Use an <img> tag in your HTML:

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var pdf = new PdfDocument("proposal.pdf");

// Image watermark from file
pdf.ApplyWatermark("<img src='company-logo.png' style='width:200px;' />",
    opacity: 25);

// Or use Base64 encoded image
var logoBytes = File.ReadAllBytes("logo.png");
var base64 = Convert.ToBase64String(logoBytes);
pdf.ApplyWatermark($"<img src='data:image/png;base64,{base64}' style='width:150px;' />",
    opacity: 30);

pdf.SaveAs("branded-proposal.pdf");
Enter fullscreen mode Exit fullscreen mode

Image watermarks work well for company logos or certification stamps.

How Do I Combine Text and Images?

HTML supports multiple elements:

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var pdf = new PdfDocument("certificate.pdf");

var watermarkHtml = @"
<div style='text-align:center;'>
    <img src='logo.png' style='width:100px;' />
    <h2 style='color:navy; margin:10px 0;'>ACME Corporation</h2>
    <p style='color:gray;'>Authorized Document</p>
</div>";

pdf.ApplyWatermark(watermarkHtml, opacity: 40);
pdf.SaveAs("certified-document.pdf");
Enter fullscreen mode Exit fullscreen mode

How Do I Apply Different Watermarks Per Page?

Target specific pages:

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var pdf = new PdfDocument("multipage.pdf");

// Watermark only the first page
pdf.ApplyWatermark("<h1>COVER PAGE</h1>", pageIndices: new[] { 0 });

// Watermark pages 2-5
pdf.ApplyWatermark("<h1>CONFIDENTIAL</h1>", pageIndices: new[] { 1, 2, 3, 4 });

// Watermark the last page
pdf.ApplyWatermark("<h1>END OF DOCUMENT</h1>",
    pageIndices: new[] { pdf.PageCount - 1 });

pdf.SaveAs("selective-watermark.pdf");
Enter fullscreen mode Exit fullscreen mode

Page indices are zero-based, so page 1 is index 0.

How Do I Create a Diagonal Watermark Across the Page?

For watermarks that span the entire page diagonally:

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var pdf = new PdfDocument("legal-doc.pdf");

var diagonalWatermark = @"
<h1 style='
    color: red;
    font-size: 120px;
    font-family: Arial, sans-serif;
    text-transform: uppercase;
    letter-spacing: 10px;
'>CONFIDENTIAL</h1>";

pdf.ApplyWatermark(diagonalWatermark, rotation: -45, opacity: 15);
pdf.SaveAs("diagonal-watermark.pdf");
Enter fullscreen mode Exit fullscreen mode

Large font sizes with low opacity create effective full-page watermarks.

How Do I Remove a Watermark?

Watermarks in IronPDF are rendered into the PDF. To "remove" one, you'd need to work with the original unwatermarked document. A common pattern:

using IronPdf;
// Install via NuGet: Install-Package IronPdf

// Keep the original
var original = new PdfDocument("report.pdf");
original.SaveAs("report-original.pdf");

// Create watermarked version
var watermarked = new PdfDocument("report.pdf");
watermarked.ApplyWatermark("<h1>DRAFT</h1>", opacity: 30);
watermarked.SaveAs("report-draft.pdf");

// When ready, use the original for final version
Enter fullscreen mode Exit fullscreen mode

Store originals separately if you need unwatermarked versions later.

How Do I Watermark During PDF Generation?

Apply watermarks right after rendering:

using IronPdf;
// Install via NuGet: Install-Package IronPdf

var renderer = new ChromePdfRenderer();

var html = @"
<html>
<body>
    <h1>Sales Report</h1>
    <p>Q4 2024 Performance</p>
    <table>
        <tr><td>Revenue</td><td>$2.5M</td></tr>
        <tr><td>Growth</td><td>15%</td></tr>
    </table>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(html);

// Apply watermark before saving
pdf.ApplyWatermark("<h1 style='color:lightgray;'>INTERNAL</h1>",
    rotation: -30,
    opacity: 20);

pdf.SaveAs("internal-sales-report.pdf");
Enter fullscreen mode Exit fullscreen mode

Quick Reference

Parameter Description Default
html HTML string for watermark content Required
opacity Transparency (0-100) 50
rotation Degrees of rotation 0
verticalAlignment Top, Middle, Bottom Middle
horizontalAlignment Left, Center, Right Center
pageIndices Array of page numbers All pages
Use Case Settings
Draft indicator Large text, 20-30% opacity, diagonal
Company logo Image, 15-25% opacity, corner position
Confidential label Red text, 30-40% opacity, centered
Copyright Small text, bottom corner, 40% opacity

CSS gives you complete control over watermark appearance—use any styling you'd use in a web page.

For more watermark customization options, see the IronPDF custom watermark documentation.


Written by Jacob Mellor, CTO at Iron Software. Jacob created IronPDF and leads a team of 50+ engineers building .NET document processing libraries.

Top comments (0)