Adding stamp to PDF documents

automation linux

Recently I ran into a website that wanted me to upload several documents but it asked me to write my ID on each page of those documents in order to “make processing faster.” I’m not going to debate the intelligence of this system (given especially the fact that the during the upload I am already logged into the system, so the backend ostensibly knows the ID of the person uploading a document), but there was no chance I would “make processing faster” by…

Why? Not only it is stupid, it insults my intelligence! Most importantly, I am lazy.

So the challenge is to create such an ID on each page programmatically, which is actually not that hard in Linux.


(in case of Ubuntu, all three are a simple sudo apt install away).

Create a stamp page

If you want to control the positioning of the stamp, you’ll have to create a PDF page of the same size as pages in the original document. This stamp page should have transparent background and the image of the stamp positioned properly (e.g. at the top center).

The easiest way to create such a stamp PDF page is in Inkscape. Create a new document in Inkscape, then go to File → Document properties and select the page size that corresponds your page size in the document you plan to manipulate. Unless you have changed your settings, Inkscape will use transparent background by default.

Use Inkscape to create stamp graphic of whatever sophistication you need and place it in the proper location of your “page.”

Now, when exporting to PDF, Inkscape doesn’t offer much control over the area to export, so we’ll have to do it in two stages. First the page has to be exported as PNG (File → Export PNG Image). This opens a sidebar with export options. In the “Export area” section, choose “Page,” then export to a PNG file.

Once exported to PNG, convert it to PDF using ImageMagick’s convert tool:

$ convert watermark.png watermark.pdf

Apply the new stamp page over the original document

This is the easy part:

$ pdftk mydoc.pdf stamp watermark.pdf output mydoc-new.pdf
Powered by Jekyll and Moonwalk