script
This commit is contained in:
commit
09fea4c0b8
4 files changed
+52
No files matched your search
@@ -0,0 +1,2 @@
|
|||||||
|
*.pdf
|
||||||
|
/.venv
|
||||||
@@ -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
@@ -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')
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
pypdf==6.19.0
|
||||||
Reference in new issue
Block a user