pympose/pympose.py

45 lines
1.4 KiB
Python
Raw Normal View History

2023-06-12 20:25:06 +01:00
import pypdf
def main(source, out, section_length):
assert section_length % 4 == 0
in_reader = pypdf.PdfReader(source)
out_writer = pypdf.PdfWriter()
to_add = section_length - len(in_reader.pages) % section_length
add_before = to_add // 2
add_after = to_add - add_before
pages = [pypdf.PageObject.create_blank_page(in_reader) for _ in range(add_before)]
pages += in_reader.pages
pages += [pypdf.PageObject.create_blank_page(in_reader) for _ in range(add_after)]
for sig_start in range(0, len(in_reader.pages), section_length):
for side in range(section_length // 4):
top = [
sig_start + section_length - side - 1,
sig_start + side,
]
bottom = [
sig_start + section_length // 2 + side,
sig_start + section_length // 2 + side - 1,
]
if side % 2 != 0:
top = list(reversed(top))
bottom = list(reversed(bottom))
print(top)
print(bottom)
continue
for si, pi in enumerate(range(sig_start, sig_start + section_length)):
page_box = pages[pi]
trans = pypdf.Transformation()
if si >= section_length // 4 and si < 3 * section_length // 4:
trans = trans.rotate(180)
trans = trans.scale(0.5, 0.5)