34 lines
1.1 KiB
Python
Executable File
34 lines
1.1 KiB
Python
Executable File
#!/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]
|