Spreadmaker- A tool to generate spreads for hand binding

IDC IIT Bombay India

The post describes a handy python script to convert usual pdfs into spreads of 8. The printed pdf can be bound by hand.

Thanks to my project guide, Prof. Girish, who inspired me to write this by asking me to read more stuff.

During my project days (and even now), I used to print papers from several journals to read and reflect upon. The tangibility of paper provides a far better reading experience than e-books. I have given up on e-reading as it strains my eyes, difficult to make notes on side and record keeping is difficult. If something is more than 25 pages, I usually print it and read it. But I do try to save as much as paper possible.

The common way to save paper was to print two pages on one sheet. But the manner in which the pages came out was very cumbersome to handle and did not give much joy while reading. While printing one of my favorite journals, Mind and machines, I came up with an idea of making a script that would convert the pdf by re-arranging the pages to form an 8-page booklet. This booklet could later be bound into a book.

The art of bookbinding had already enticed me and I was binding my own books for almost a semester then (and now too). So, It would be easier to bind them using kettle stitch technique and I might end up having a readable journal/book.

A post shared by Rohit Gupta (@rohit7gupta) on

To prototype the script, I divided an A4 sheet into 4 parts and then folded them half. Then I numbered the pages as they usually are when you print them like two pages on one sheet. Next, I made a booklet out of the same and wrote the new page numbers as they should be for the booklet.

Some mathematical induction and we had a simple formula to make a 4 spread, 16-page block. Then, to generate the complete book, one has to add some blank pages to complete the 16-page blocks..

That is pretty much it. I have tested it at least 10 times and printed close to 1000 pages. It works. The script is available here.

How to use it

Clone the git repo. Make sure you have the dependencies ‘pip’ed like pyPDF2. Try doing pip install pyPDF2 to install it.

Then paste the pdf you wish to convert in the repo folder. Rename it as in.pdf and then run the script from the terminal using sudo python spreadmaker.py . You should have an out_final.pdf. That the file. Delete the other out.pdf file. You can print the pages in two on one style and then grab the top 4 and fold it in half. You should see the numbers falling in place. Then bind it using the kettle stitch method.

Future Improvements

The script is ‘hacky’. Some obvious improvements are:

I know this may be achievable using pdf software like acrobat. But since, I am on Linux, I seem to have no better option than to write one snippet for myself. Plus its lot of fun.

Hoping that someone finds it useful.