Create watermarks on PDFs in UWP
An app using Nutrient UWP SDK can draw content on top of a PDF using the OnWatermarkRequested
event found in PSPDFKit.UI.PdfView
. This event exposes a callback for internal watermark requests, allowing your code to supply a Watermark
object containing the desired image.
Using OnWatermarkRequested
Whenever a page is rendered, you can use the OnWatermarkRequested
event to render watermarks on the page.
To do this, add an event handler in which a Watermark
is created, accepting a SoftwareBitmap
as the image to render, and pass it back. At the end of your handler, the event’s deferral must also be completed:
PDFView.OnWatermarkRequested += async (controller, deferral) => { using (var image = await AssetLoader.GetWatermarkAsync()) { controller.ViewWatermark = new Watermark(image) { HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, SizeOnPage = new Size(200, 200) }; } deferral.Complete(); };
Make sure the handler is as efficient as possible, as it might be invoked multiple times per page (depending on tile rendering).
Moreover, watermarks created through OnWatermarkRequested
are displayed over the document, and they’re only visible to the client. When exporting this document, the watermark won’t be included.
Printing
Watermarks created via OnWatermarkRequested
aren’t present when printing a document. To print with a watermark included, it must be set in similar fashion, but to the Watermark
property of our PrintHelper
:
var printHelper = await PrintHelper.CreatePrintHelperFromSourceAsync(documentSource, this, "PrintCanvas", "PrintWithoutUI"); using (var image = await AssetLoader.GetWatermarkAsync()) { printHelper.Watermark = new Watermark(image) { HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, SizeOnPage = new Size(200, 200) }; } await printHelper.ShowPrintUIAsync();
Our Printing guide has more information about the PrintHelper
.