rotateandstitch 1.07 KB
#!/usr/bin/env python

from optparse import OptionParser
import sys, subprocess, time, re, shlex

parser = OptionParser()
(options, args) = parser.parse_args()

pagesize = re.compile(r'Page size:\s+(\d+)\s+x\s+(\d+)')
files = []
outpdf = args.pop(0)
for arg in args:
  output = subprocess.Popen("pdfinfo \"%s\"" % (arg), shell=True, stdout=subprocess.PIPE).communicate()[0]
  pagematch = pagesize.search(output)
  if pagematch == None:
    continue
  if pagematch.group(1) < pagematch.group(2):
    files.append(arg)
    continue
  infile = arg
  outfile = re.sub(r'.pdf', '.rotate.pdf', infile)
  output = subprocess.Popen("pdftk \"%s\" cat 1-endW output \"%s\"" % (infile, outfile), shell=True, stdout=subprocess.PIPE).communicate()[0]
  files.append(outfile)

def order(pdf):
  nummatch = re.search(r'(\d+)', pdf)
  if nummatch == None:
    return 0
  else:
    return int(nummatch.group(1))

files = sorted(files, key=order)
output = subprocess.Popen("pdftk %s cat output \"%s\"" % (' '.join(['"%s"' % (file) for file in files]), outpdf), shell=True, stdout=subprocess.PIPE).communicate()[0]