How to brand documents with a logo watermark using AI
Leave feedback
On this page
A logo watermark says where a document came from without anyone having to read a footer. add_image_watermark places it, and opacity decides whether the result is branding or a mess.
Note
The commands and config snippets on this page are for the .NET build of the server — the only platform available today. Installation and client setup: MCP server for .NET. Other platforms will expose the same tools with their own launch command; everything else on this page applies unchanged.
The prompt
Put logo.png on every page of report.pdf at 30% opacity.
Both the document and the logo are resolved by name from your storage folder, so keep the logo next to the documents — or in the folder you configured — and refer to it by file name.
Getting it to look right
Opacity 0.2-0.4 — visible, still readable underneath. This is the range most people want.
Opacity above 0.6 — the logo dominates; useful for a specimen or a sample marking, distracting for a document people must read.
Rotation — 0 for a clean centred mark, -45 for the diagonal look that matches text watermarks.
Iterate in the conversation rather than guessing:
That is too strong — redo it at 0.2.
Each attempt writes a new file, so the original is never at risk; delete the rejected copies afterwards.
Logo and text together
Brand and state the status:
Add the logo at 25% opacity, then add a CONFIDENTIAL text watermark to that result.
Two calls, chained on the produced file — the “to that result” is what keeps both marks.
Practical notes
Use a transparent PNG where possible: a logo on a white rectangle will show that rectangle over the page.
Images are targets too. Branding a set of product photos works exactly like branding a PDF.
Marks can be removed later. Because the logo is applied as a watermark object, remove_watermarks can take it back off when the document is rebranded — one of the practical advantages over pasting a logo into the source file.
Check the licence before a brand rollout. Evaluation-mode output is not distributable: get_license_status.
Was this page helpful?
Any additional feedback you'd like to share with us?
Please tell us how we can improve this page.
Thank you for your feedback!
We value your opinion. Your feedback will help us improve our documentation.