#!/usr/bin/env python # Copyright (C) 2009 by Pruet Boonma # the GPL (Gnu Public License) applies. See http://software.thai.net/gpl.html # for more information. import os, optparse import sys import tempfile from pyPdf import PdfFileWriter, PdfFileReader output = PdfFileWriter() parser = optparse.OptionParser(usage="usage: %prog [options] in.pdf out.pdf", version="%prog 0.1.0 by Pruet Boonma") #parser.add_option("-c", "--column", dest="column", default="1", help="number of columns in the original pdf file, please choose 1 or 2") parser.add_option("-x", "--crop", dest="crop", default="0", help="margin crop, in pt") (options, args) = parser.parse_args() if len(args) < 1: print "Missing input file" sys.exit() elif len(args) < 2: print "Missing output file" sys.exit() #if options.column not in ('1', '2'): # print >> sys.stderr, "Invalid number of column" # sys.exit() tmpdir = tempfile.mkdtemp() fin = os.path.abspath(args[0]) fout = os.path.abspath(args[1]) input1 = PdfFileReader(file(fin, "rb")) input2 = PdfFileReader(file(fin, "rb")) numPages = input1.getNumPages() trim = int(options.crop) for i in range(numPages): a_page = input1.getPage(i) a_page.mediaBox.upperRight = (a_page.mediaBox.getUpperRight_x() - trim, a_page.mediaBox.getUpperRight_y() - trim) a_page.mediaBox.lowerLeft = (a_page.mediaBox.getLowerLeft_x() + trim, a_page.mediaBox.getUpperRight_y()/2 + trim/2 - 5) a_page.rotateClockwise(270) output.addPage(a_page) b_page = input2.getPage(i) b_page.mediaBox.upperRight = (b_page.mediaBox.getUpperRight_x() - trim, (b_page.mediaBox.getUpperRight_y() )/2 + 5) b_page.mediaBox.lowerLeft = (b_page.mediaBox.getLowerLeft_x() + trim , b_page.mediaBox.getLowerLeft_y() + trim ) b_page.rotateClockwise(270) output.addPage(b_page) outputStream = file(fout, "wb") output.write(outputStream) outputStream.close() #os.chdir(tmpdir)