Add watermark to PDF using C++

A Watermark is a translucent image that usually contains a logo or seal to identify who created the document or image.

Aspose.PDF for C++ allows adding watermarks to your PDF document using Artifact class. Please check this article to resolve your task.

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

void GettingWatermarks() {

    String _dataDir("C:\\Samples\\");
    String inputFileName("watermark.pdf");
    String outputFileName("watermark_out.pdf");

    auto document = MakeObject<Document>(_dataDir + inputFileName);

    auto artifact = MakeObject<WatermarkArtifact>();
    auto textState = MakeObject<TextState>();
    artifact->SetTextAndState(u"WATERMARK", textState);
    artifact->set_ArtifactHorizontalAlignment (HorizontalAlignment::Center);
    artifact->set_ArtifactVerticalAlignment (VerticalAlignment::Center);


    document->Save(_dataDir + outputFileName);