How to batch watermark multiple PDF files programmatically?

July 11, 2023, 5:39 a.m.
When it comes to processing massive volumes of documents, automated solutions become paramount. For instance, watermarking is a common process in managing documents for various functions such as trademarks, security, or copyright protection. Manually watermarking an extensive collection of PDF files could be extremely tiresome, time-consuming, and prone to human errors. This article explores the procedure of batch watermarking multiple PDF files programmatically using different programming languages and libraries. It provides an in-depth guideline on how to programmatically watermark PDF files in a batch, thus creating a more efficient and effective solution.
How to batch watermark multiple PDF files programmatically?
Let's start with Python, a simple, user-friendly, and efficient programming language. It offers excellent libraries, such as PyPDF2, that you can use to manipulate PDFs, including batch watermarking.
Firstly, you need to install the necessary library. Install the PyPDF2 library using pip, Python's package manager:


pip install PyPDF2


Next, import the necessary functions from the library:


from PyPDF2 import PdfFileWriter, PdfFileReader


Create a function to add a watermark to a PDF:


def add_watermark(input_pdf, output_pdf, watermark):

watermark_obj = PdfFileReader(watermark)

watermark_page = watermark_obj.getPage(0)

pdf_reader = PdfFileReader(input_pdf)

pdf_writer = PdfFileWriter()

# Watermark all the pages

for page in range(pdf_reader.getNumPages()):

pdf_page = pdf_reader.getPage(page)



with open(output_pdf, 'wb') as out:



Now, loop through all the PDFs in your directory, applying the watermark:


import os

directory = '/path/to/pdf/files'

watermark = 'watermark.pdf'

for filename in os.listdir(directory):

if filename.endswith('.pdf'):

add_watermark(os.path.join(directory, filename), 'watermarked_'+filename, watermark)


The above script will add a watermark to all PDFs in a folder, saving them with a new filename.

Now, let’s move to another popular language, Java. To batch watermark PDFs using Java, we need to use a library like iText. It’s a reliable library with comprehensive functionality for manipulating PDF files.

Firstly, add the necessary dependencies to your Maven pom.xml file:






Now use this code to add a watermark to a PDF:


import com.itextpdf.text.pdf.PdfReader;

import com.itextpdf.text.pdf.PdfStamper;

import com.itextpdf.text.Image;

import com.itextpdf.text.pdf.PdfContentByte;

public void addWatermark(String inputFile, String outputFile, String watermarkFile) {

PdfReader reader = new PdfReader(inputFile);

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));

Image watermark = Image.getInstance(watermarkFile);

for (int i = 1; i <= reader.getNumberOfPages(); i++) {

// put the watermark on a separate layer above the content

PdfContentByte over = stamper.getOverContent(i);







Finally, use the function to watermark each PDF file in a directory:



public void watermarkBatch(String directory, String watermarkFile) {

File dir = new File(directory);

for (File file : dir.listFiles()) {

if (file.getName().endsWith(".pdf")) {

addWatermark(file.getAbsolutePath(), "watermarked_" + file.getName(), watermarkFile);





Programmatic batch watermarking can significantly improve your efficiency in managing large volumes of PDFs. It saves you valuable time, resources, and offers you accuracy, consistency in quality, and peace of mind. Using Python with PyPDF2 or Java with iText, you can create powerful programs to watermark multiple PDF files in a batch, offering convenience and supreme versatility. Automation is the future of efficient management of digital resources, and programmatically batch watermarking moves you a step towards that future.

Check out our services

Check out our product HelpRange. It is designed to securely store (GDPR compliant), share, protect, sell, e-sign and analyze usage of your documents.

Other Posts: