main
km0 1 year ago
commit e3076a22d0

4
.gitignore vendored

@ -0,0 +1,4 @@
venv/
input.pdf
output.pdf
.DS_Store

@ -0,0 +1,21 @@
# Split pdf pages
![zac cover](cover.png)
There is this book i want to print, but the pages are already coupled 2 by 2 and so the booklet printing doesn't work.
This script uses [pypdf2](https://pypdf2.readthedocs.io/en/latest/user/cropping-and-transforming.html) to crop and transform the a4 horizontal pages of the pdf into 2 a5 vertical ones.
Good way to procrastinate eh
## Usage
First install the requirements (actually just PyPDF2)
`pip install -r requirements.txt`
The script takes a `input.pdf` and gives out a `output.pdf`.
Then run the code.
`python3 zac.py`

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 KiB

@ -0,0 +1,2 @@
PyPDF2==2.11.1
typing-extensions==4.4.0

@ -0,0 +1,31 @@
from PyPDF2 import PdfWriter, PdfReader, PageObject
reader = PdfReader('input.pdf')
writer = PdfWriter()
for index, page in enumerate(reader.pages):
if index != 0 and index != len(reader.pages)-1:
offset = page.mediabox.right / 2
# hack to clone the page as a copy not reference
# https://github.com/py-pdf/PyPDF2/issues/100#issuecomment-378890266
left_page = PageObject.createBlankPage(None, page.mediaBox.getWidth(), page.mediaBox.getHeight())
left_page.mergePage(page)
left_page.mediabox.right = offset
writer.add_page(left_page)
right_page = PageObject.createBlankPage(None, page.mediaBox.getWidth(), page.mediaBox.getHeight())
right_page.mergePage(page)
right_page.mediabox.left = offset
writer.add_page(right_page)
else:
writer.add_page(page)
with open("output.pdf", "wb") as fp:
writer.write(fp)
Loading…
Cancel
Save