This commit is contained in:
neon committed 2026-09-27 19:10:38 +02:00
commit 09fea4c0b8
4 files changed
+52

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
*.pdf
/.venv
+9
View File
@@ -0,0 +1,9 @@
# booklet.py
A simple Python script to transform a PDF to a printable booklet
```python3 -m venv ./.venv
source ./.venv/bin/activate
pip install requirements.txt
python3 booklet.py document.pdf```
+40
View File
@@ -0,0 +1,40 @@
import sys
from pypdf import PaperSize, PdfReader, PdfWriter, Transformation
file = str(sys.argv[1])
reader = PdfReader(file)
count = len(reader.pages)
sheets = int(count/4)
pages = count - 1
writer = PdfWriter()
w = PaperSize.A5.width
h = PaperSize.A5.height
for i in range(0, sheets):
page = writer.add_blank_page(width=PaperSize.A4.height, height=PaperSize.A4.width)
if pages - i * 2 < count:
left_front = reader.pages[pages - i * 2]
left_front.scale_to(width=w, height=h)
page.merge_transformed_page(left_front, Transformation().translate(0, 0))
if i * 2 < count:
right_front = reader.pages[i * 2]
right_front.scale_to(width=w, height=h)
page.merge_transformed_page(right_front, Transformation().translate(w, 0))
page = writer.add_blank_page(width=PaperSize.A4.height, height=PaperSize.A4.width)
if i * 2 + 1 < count:
left_back = reader.pages[i * 2 + 1]
left_back.scale_to(width=w, height=h)
page.merge_transformed_page(left_back, Transformation().translate(0, 0))
if pages - i * 2 - 1 < count:
right_back = reader.pages[pages - i * 2 - 1]
right_back.scale_to(width=w, height=h)
page.merge_transformed_page(right_back, Transformation().translate(w, 0))
writer.write(file + '.booklet.pdf')
+1
View File
@@ -0,0 +1 @@
pypdf==6.19.0