In today’s digital world, it’s crucial to secure our PDF documents and showcase our brand, the question of how to add a watermark to PDF naturally arises.

Watermarks are like a secret code that does both. Imagine doing this automatically, without lots of work. That’s where a nifty tool and the programming language go (Golang) come into play.

Using the Golang library, we can easily add these protective and brand-boosting marks to our PDFs. It’s like having a magic wand that keeps our documents safe and ensures they carry our unique stamp.

Whether you create lots of documents for work, write code, or just want your PDFs to look polished and secure, this method is a game-changer.

So, why is this method so awesome for this? Because it makes the whole process smooth and lets us customize our watermarks just the way we want. This means more time saved and documents that look great and are protected.

What is Watermarked PDF?

A Watermarked PDF is a document that incorporates a watermarking technique, involving the addition of a visible or invisible mark to the content. This dual-purpose approach serves both security and branding functions, proving to be highly effective in various scenarios.

In this comprehensive guide, we will delve into the intricate process of how to add watermarks to PDFs programmatically using UniPDF.

How to add Watermark to PDF Documents?

Let’s kick off our journey by understanding the main function that assembles the entire process.

Our Go program is designed to take in three crucial arguments: the input PDF file that needs watermarking, the watermark image that will be applied, and the output file where the watermarked PDF will be saved.

The main function acts as the entry point and seamlessly calls the addWatermarkImage function, encapsulating the watermarking logic.

func main() {
    // Command-line argument parsing and validation// ...
    err := addWatermarkImage(inputPath, outputPath, watermarkPath)
    // Handle errors and display completion message

Input - Loading the Input PDF File:

The first step in the watermarking process involves loading the input PDF file. The NewPdfReaderFromFile method provided by UniPDF is employed to read the input file, resulting in a pdfReader object that becomes the canvas for our watermarking endeavors.

pdfReader, f, err := model.NewPdfReaderFromFile(inputPath, nil)
// Handle errors and ensure file closure

Example report card without watermarked PDF

Figure: Example report card without watermarked PDF

Watermark Image - Loading and Insertion:

Choosing the right watermark image is critical for a clean and effective result. It is advisable to use an image with a transparent background to prevent interference with the original PDF content.

The following code demonstrates how to read an image, set its position, adjust its scale, and control its opacity before seamlessly integrating it into the PDF.

watermarkImg, err := c.NewImageFromFile(watermarkPath)

// Set position, scale, and opacity
\_ = c.Draw(watermarkImg)

UniDoc Watermark

Figure: UniDoc logo using for watermarked PDF

Generating the Output Watermarked PDF File:

The heart of our watermarking operation lies in the addWatermarkImage function. Here, we initiate a new creator object from UniPDF, acquire the input PDF and watermark image, and systematically iterate through the entire PDF file to apply the watermark.

// Iterate through pages, add watermark, and write to output file

// Get the total page of PDF.
numPages, err := pdfReader.GetNumPages()
if err != nil {
    return err

// Loop through each pages and draw watermark to each page.
for i := 0; i < numPages; i++ {
    pageNum := i + 1

    // Read the page.
    page, err := pdfReader.GetPage(pageNum)

    if err != nil {
        return err

    // Add to creator.
    watermarkImg.SetPos(0, (c.Context().PageHeight-watermarkImg.Height())/2)
    _ = c.Draw(watermarkImg)

Final Result

Example report card with watermarked PDF

Figure: Example report card with watermarked PDF

Benefits to Add Watermark to PDF Files

Certainly! Let’s explore the benefits of adding watermarks to PDF files using UniPDF in Golang:

  1. Enhanced Document Security: WaterMarking discourages illegal sharing and dissemination of the PDF files since it offers an extra level of security. Seeing a watermark such as “Confidential” captures exactly the essential essence of how confidential this document is.

  2. Branding and Ownership Identification: Adding a company logo or text watermark to PDF files establishes brand identity and ownership. This can be particularly valuable for businesses, institutions, or individuals looking to assert their authority over the document’s content.

  3. Anti-Counterfeiting Measures: Watermarks, akin to those found on physical currency, serve as an anti-counterfeiting measure. They make it more challenging for individuals to forge or manipulate the document without leaving obvious traces.

  4. Visual Communication: Watermarks are a visual way of communicating information to the viewer. Watermarks, in a way, speak – whether they signal the document’s readiness (Draft or Final), classify confidentiality levels, impart copyright information and others.

  5. Professionalism and Aesthetics: Adding watermarks to PDF files provides a professional touch and an aesthetic look. This is especially true to businesses who need pristine and branded documents for presentations targeting clients, partners or stakeholders.

  6. Versatility in Use Cases: Programmatically adding watermarks is a flexible technique that can be applied to different scenarios. For instance, it can be furthered to incorporate QR codes, barcodes and other visual elements on PDF pages improving the usability of that document.

  7. Automated Batch Processing: The code presented here provides batch processing of applying watermarks to multiple PDFs This automation proves useful in instances where large numbers of documents must be consistently branded or secured.

  8. Flexible Customization Options: UniPDF in Golang offers an array of customization options for watermarks. Developers can manage watermark position, scale and opacity which they customize based on design needs.

  9. Maintained Document Structure: When writing the watermarked PDF to a new file, UniPDF a golang pdf library guarantee that consistent structures such as outlines and forms are preserved in their original document format. This preservation is relevant to documents having predefined structures and interactive components.

  10. Community Support and Documentation: UniPDF comes with thorough documentation and community support, making it accessible for developers of varying expertise levels. The provided code examples and a supportive community contribute to a smoother integration of watermarking features.

Why Choose Programmatically Added Watermarks?

Secure Your Content:

Programmatic watermarking ensures that each copy of your document carries a unique identifier, deterring unauthorized distribution and use. This layer of security is crucial for confidential documents, intellectual property, and proprietary information.

Strengthen Brand Presence:

Embedding a visual or textual watermark that reflects your brand or ownership claim directly onto your PDFs enhances brand awareness and maintains consistency across your digital assets.

Automate and Scale:

With the ability to process documents in batches, programmatically adding watermarks enables the handling of large volumes of documents efficiently, saving time and reducing manual errors.

Boost Your Watermarking Expertise with Advanced Techniques:

Take your watermarking abilities to the next level with these advanced tips and tricks. Whether you’re dealing with batch processing multiple documents or ensuring that your watermarks work seamlessly on mobile devices, this section offers valuable insights for experienced users seeking to optimize their workflow and strengthen document security.

Related: Golang & PDFs: Digital Signature Authenticity Guide


As we conclude our comprehensive guide, you’ve not only learned how to add watermark to PDF programmatically? but have also gained practical experience through the provided code snippets. UniPDF, with its powerful capabilities in Golang, emerges as a go-to solution for dynamic PDF manipulation.

Whether you’re striving for enhanced document security, brand recognition through logos, or creative customization fonts with images, UniPdf in Golang offers a versatile toolkit.

Embrace the provided code in the Go Playground, experiment with different images and PDFs, and unlock the full potential of programmatically watermarking your PDF files.

Don’t hesitate to reach out to our team for further assistance, questions, or customized watermarking solutions tailored to your specific needs. Your PDFs are unique; let’s ensure they reflect your uniqueness too.