Vous êtes sur la page 1sur 3

# -*- coding: utf-8 -*-

"""
Created on Mon Aug 21 08:57:04 2017

@author: Amin Lab


"""

import numpy as np
import os

def JapaneseBindingDuplex(pages, Folder):


pageList = ''
PrintOrder = []
sheets = int(np.ceil(float(pages) / 4))
first = True
CP = 1
for s in range(sheets):
if first:
PrintOrder.append(CP)
first = False
else:
PrintOrder.append(CP)
CP += 2
PrintOrder.append(CP)
CP += 1
PrintOrder.append(CP)
CP += -2
PrintOrder.append(CP)
CP += 3

###
# remove page numbers that exceed the maximum pagenumber
# -> replace them with the finishing page
###
for i in range(len(PrintOrder)):
if PrintOrder[i] > pages:
PrintOrder[i] = str(pages)
else:
PrintOrder[i] = str(PrintOrder[i])

pageList = ', '.join(PrintOrder)

name = '{}_pages_JapaneseBindingDuplex.txt'.format(pages)
f = open('{}\\{}'.format(Folder, name), 'w')
f.write(pageList)
f.close()

def BookletBindingDuplex(pages, Folder, start = 1, save = True):


PrintOrder = []
AtEnd = True
extended = False
if (pages - start + 1) % 4 != 0:
extended = True
extPages = extend(pages)
print('The pages have been extended to {} pages'.format(extPages))
oldPages = pages
pages = extPages
iterations = int(np.ceil(float(pages - start + 1) / 2))
for i in range(iterations):
if AtEnd:
PrintOrder.append(pages - i)
PrintOrder.append(start + i)
AtEnd = False
else:
PrintOrder.append(start + i)
PrintOrder.append(pages - i)
AtEnd = True

if extended:
pages = oldPages

for i in range(len(PrintOrder)):
if PrintOrder[i] > pages:
PrintOrder[i] = str(pages)
else:
PrintOrder[i] = str(PrintOrder[i])

pageList = ', '.join(PrintOrder)

if save:
name = '{}_to_{}_pages_Booklet.txt'.format(start, pages)
f = open('{}\\{}'.format(Folder, name), 'w')
f.write(pageList)
f.close()
else:
return PrintOrder

def extend(pages, start = 1):


"""
This function extends the pagenumber so that it is devidabel by 4
"""
while (pages - start + 1) % 4 != 0:
pages += 1
return pages

def GermanBindingDuplex(pages, Folder, packPages = [5, 6, 7, 8, 9, 10]):


###
# split the pages in packs of 32
###
for i in range(len(packPages)):
CPG = packPages[i]
if i == 0:
Max = float(pages) / (4 * CPG) - np.floor(float(pages) / (4 * CPG))
packNumber = CPG
print('WIth packs at {} pages one needs {} packs'.format(CPG, Max))
else:
MM = float(pages) / (4 * CPG) - np.floor(float(pages) / (4 * CPG))
print('With packs at {} pages one needs {} packs'.format(CPG, MM))
if MM > Max:
Max = MM
packNumber = CPG
elif MM == 0.:
Max = MM
packNumber = CPG
break
Packs = Max + np.floor(float(pages) / (4 * packNumber))
print('It was decided to use packs at {} pages, one needs {} packs. This makes
{} pages. The Book has {}'.format(packNumber,
Packs, packNumber * 4 * np.ceil(Packs), pages))

###
# Makiung the numbering for the individual Packs
###
PrintOrder = []
start = 1
for i in range(int(np.ceil(Packs))):
stop = packNumber * (i + 1) * 4
if stop > pages:
stop = pages
print('Making Pack number {}. Passing pages {} to {} ({} in
total)'.format(i,
start, stop, stop - start + 1))
Booklet = BookletBindingDuplex(stop, Folder, start = start, save = False)
print('Pages of this pack\n{}'.format(Booklet))
PrintOrder.extend(Booklet)
print('The pages up until now:\n{}'.format(PrintOrder))
start = stop + 1

for i in range(len(PrintOrder)):
if eval(PrintOrder[i]) > pages:
PrintOrder[i] = str(pages)
else:
PrintOrder[i] = str(PrintOrder[i])

pageList = ', '.join(PrintOrder)

name = '{}_pages_GermanBinding.txt'.format(pages)
f = open('{}\\{}'.format(Folder, name), 'w')
f.write(pageList)
f.close()

if __name__ == '__main__':
pages = 54
Folder = os.getcwd()
#pages = eval(raw_input('Enter pagenumbers: '))
JapaneseBindingDuplex(pages, Folder)
BookletBindingDuplex(pages, Folder)
GermanBindingDuplex(pages, Folder)

Vous aimerez peut-être aussi