make_booklet is a Python tool that converts any PDF into a print-ready booklet PDF.
It supports professional print workflows including TrimBox/ArtBox margin trimming and automatic booklet imposition.
The script ensures that pages appear in the correct order once printed double-sided, folded, and trimmed.
- Converts a standard PDF into booklet imposition (2 pages per sheet)
- Odd pages trim only on the left side
- Even pages trim only on the right side
- Preserves top, bottom, and outer crop lines or margins
- Pages are automatically padded to a multiple of 4 with blank pages
- Output file name is automatically generated as: INPUTNAME_PRINT.pdf
- Runs entirely offline, no external services or PDF tools required
- Python 3.8 or later
- pypdf version 6.3.0 or later
Install the required package:
pip install pypdf
python make_booklet.py input.pdf
This will create:
input_PRINT.pdf
To specify a custom output name:
python make_booklet.py input.pdf output.pdf
If the script file make_booklet.py is located on your Desktop, you can convert a PDF by simply dragging the PDF file onto the script icon and releasing it.
The booklet will be generated automatically in the same directory as the source file.
Example:
- Place
make_booklet.pyon your Desktop. - Drag a PDF and drop it onto the script.
- A new file named
<input>_PRINT.pdfwill be created.
For correct booklet printing:
- Print double-sided (duplex)
- Orientation: Portrait
- Binding: Short-edge when printing portrait booklets
- Scaling: 100% (do not use "Fit" or "Shrink to printable area")
- Do not add additional printer crop marks
- Windows 10/11
- macOS
- Linux
- Compatible PDF viewers:
- Adobe Acrobat / Acrobat Reader
- Chrome / Edge built-in PDF viewer
- macOS Preview
Contributions and pull requests are welcome. Potential improvements:
- Graphical user interface (Tkinter, PyQt, or web frontend)
- Automatic inner margin detection
- Additional preset outputs for A5, A4, and A3 booklet production
- PDF/X prepress output options
- Support for cover and section-sewn booklet structures
If you encounter problems or have suggestions, please open an issue in the repository.