34 lines
757 B
Python
Executable File
34 lines
757 B
Python
Executable File
#!/usr/bin/env python
|
|
|
|
'''
|
|
usage: 4up.py my.pdf
|
|
|
|
Creates 4up.my.pdf with a single output page for every
|
|
4 input pages.
|
|
'''
|
|
|
|
import sys
|
|
import os
|
|
|
|
from pdfrw import PdfReader, PdfWriter, PageMerge
|
|
|
|
|
|
def get4(srcpages):
|
|
scale = 0.5
|
|
srcpages = PageMerge() + srcpages
|
|
x_increment, y_increment = (scale * i for i in srcpages.xobj_box[2:])
|
|
for i, page in enumerate(srcpages):
|
|
page.scale(scale)
|
|
page.x = x_increment if i & 1 else 0
|
|
page.y = 0 if i & 2 else y_increment
|
|
return srcpages.render()
|
|
|
|
|
|
inpfn, = sys.argv[1:]
|
|
outfn = '4up.' + os.path.basename(inpfn)
|
|
pages = PdfReader(inpfn).pages
|
|
writer = PdfWriter(outfn)
|
|
for index in range(0, len(pages), 4):
|
|
writer.addpage(get4(pages[index:index + 4]))
|
|
writer.write()
|