The Palos Publishing Company

Follow Us On The X Platform @PalosPublishing
Categories We Write About

Batch add watermarks to documents

To batch add watermarks to documents (e.g., PDFs, Word files), here are several methods depending on your platform and file types:


For PDF Files

1. Using Adobe Acrobat Pro (Paid)

  • Open Adobe Acrobat Pro.

  • Go to File > Action Wizard > New Action.

  • Select Watermark > Add Watermark.

  • Configure your watermark text/image and position.

  • Add all files you want to process.

  • Run the batch.

2. Using Free Tools (Windows/macOS/Linux)

PDFTK (Free Command-Line Tool)
bash
pdftk input.pdf background watermark.pdf output output.pdf

You need a watermark.pdf with your watermark as a background.

Python Script (PyPDF2 or pypdf)
python
from PyPDF2 import PdfReader, PdfWriter watermark = PdfReader("watermark.pdf") for filename in ["doc1.pdf", "doc2.pdf"]: reader = PdfReader(filename) writer = PdfWriter() for page in reader.pages: page.merge_page(watermark.pages[0]) writer.add_page(page) with open(f"watermarked_{filename}", "wb") as f_out: writer.write(f_out)

For Word Documents (DOCX)

1. Microsoft Word (Batch via Macro)

You can use a VBA macro:

vba
Sub BatchWatermark() Dim dlgOpen As FileDialog Dim doc As Document Set dlgOpen = Application.FileDialog(msoFileDialogFilePicker) With dlgOpen .AllowMultiSelect = True .Filters.Add "Word Documents", "*.docx", 1 If .Show = -1 Then For Each file In .SelectedItems Set doc = Documents.Open(file) With doc.Sections(1).Headers(wdHeaderFooterPrimary) .Range.Text = "" .Shapes.AddTextEffect( _ PresetTextEffect:=msoTextEffect1, _ Text:="CONFIDENTIAL", _ FontName:="Arial", _ FontSize:=36, _ FontBold:=msoTrue, _ FontItalic:=msoFalse, _ Left:=100, Top:=100).Select End With doc.Save doc.Close Next End If End With End Sub

Run this in the Word VBA Editor (Alt + F11).

2. Python with python-docx

This method only adds simple text watermarks, not headers/footers or diagonal watermarks.

python
from docx import Document def add_watermark(doc_path): doc = Document(doc_path) for section in doc.sections: header = section.header para = header.paragraphs[0] para.text = "CONFIDENTIAL" doc.save("watermarked_" + doc_path) files = ["doc1.docx", "doc2.docx"] for f in files: add_watermark(f)

Online Tools (Caution with Confidential Docs)


Let me know the OS or format you need help with if you’d like a ready-to-use script.

Share this Page your favorite way: Click any app below to share.

Enter your email below to join The Palos Publishing Company Email List

We respect your email privacy

Categories We Write About