Add Watermark

This demo uses the DevExpress Word Processing Document API to add a watermark to a predefined sample file.

Specify the required watermark type in the panel below. You can specify content and layout options for a text watermark. The demo uses a predefined image for an image watermark. Use the Add Watermark and Save as... dropdown button to select the output format, apply a watermark, and download the result.

Sample Document
Watermark_template.docx



using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
using System.Drawing;

Stream ApplyTextWatermark(Stream inputStream, string watermarkText, string fontName, int fontSize, Color textColor,
    WatermarkLayout layout, bool semitransparent, DocumentFormat targetFormat) {
    using var wordProcessor = new RichEditDocumentServer();
    wordProcessor.LoadDocument(inputStream);
    Document document = wordProcessor.Document;

    TextWatermarkOptions options = new() {
        FontFamily = fontName,
        FontSize = fontSize,
        Color = textColor,
        Layout = layout,
        Semitransparent = semitransparent
    };
    document.WatermarkManager.SetText(watermarkText, options);

    var outputStream = new MemoryStream();
    wordProcessor.SaveDocument(outputStream, targetFormat);
    outputStream.Position = 0;
    return outputStream;
}

Stream ApplyImageWatermark(Stream inputStream, Stream imageStream, double imageScale, bool washout, DocumentFormat targetFormat) {
    using var wordProcessor = new RichEditDocumentServer();
    wordProcessor.LoadDocument(inputStream);
    Document document = wordProcessor.Document;

    ImageWatermarkOptions options = new() {
        Scale = imageScale,
        Washout = washout
    };
    DocumentImageSource imageSource = DocumentImageSource.FromStream(imageStream);
    document.WatermarkManager.SetImage(imageSource, options);

    var outputStream = new MemoryStream();
    wordProcessor.SaveDocument(outputStream, targetFormat);
    outputStream.Position = 0;
    return outputStream;
}