Add watermark to PDF using C#

Aspose.PDF for .NET allows adding watermarks to your PDF document using Artifacts. Please check this article to resolve your task.

The following code snippet also work with Aspose.PDF.Drawing library.

A watermark created with Adobe Acrobat is called an artifact (as described in Real Content and Artifacts of the PDF specification). In order to work with artifacts, Aspose.PDF has two classes: Artifact and ArtifactCollection.

In order to get all artifacts on a particular page, the Page class has the Artifacts property. This topic explains how to work with artifact in PDF files.

Working with Artifacts

The Artifact class contains following properties:

Artifact.Type – gets the artifact type (supports values of the Artifact.ArtifactType enumeration where values include Background, Layout, Page, Pagination and Undefined). Artifact.Subtype – gets artifact subtype (supports the values of the Artifact.ArtifactSubtype enumeration where values include Background, Footer, Header, Undefined, Watermark).

Artifact.Contents – Gets a collection of artifact internal operators. Its supported type is System.Collections.ICollection. Artifact.Form – Gets an artifact’s XForm (if XForm is used). Watermarks, header, and footer artifacts contains XForm which shows all artifact contents. Artifact.Image – Gets an artifact’s image (if an image is presents, else null). Artifact.Text – Gets an artifact’s text. Artifact.Rectangle – Gets an position of an artifact on the page. Artifact.Rotation – Gets an artifact’s rotation (in degrees, positive value indicates counter-clockwise rotation). Artifact.Opacity – Gets an artifact’s opacity. Possible values are in the range 0…1, where 1 is completely opaque.

Programming Samples: How To Add Watermark On PDF Files

The following code snippet shows how to get each watermark on the first page of a PDF file with C#.

public static void AddWatermarks()
    Document document = new Document(_dataDir + "text.pdf");
    WatermarkArtifact artifact = new WatermarkArtifact();
        new TextState()
            FontSize = 72,
            ForegroundColor = Color.Blue,
            Font = FontRepository.FindFont("Courier")
    artifact.ArtifactHorizontalAlignment = HorizontalAlignment.Center;
    artifact.ArtifactVerticalAlignment = VerticalAlignment.Center;
    artifact.Rotation = 45;
    artifact.Opacity = 0.5;
    artifact.IsBackground = true;
    document.Save(_dataDir + "watermark.pdf");