raiseFichierInvalide(u"pdfinfo n'arrive pas a lire le fichier (il est peut-etre corrompu ou protege par un mot de passe), https://wiki.crans.org/VieCrans/ImpressionReseau#Format_des_fichiers",path_to_pdf)
self._pages=-1
forlineinpdfinfo[0].split('\n'):
ifline.startswith('Pages'):
self._pages=int(line.split()[1])
elifline.startswith('Page size'):
size=line.split()
iflen(size)<=6:
self._format="Unknown"
else:
self._format=size[6]
self._width=float(size[2])
self._height=float(size[4])
# Hack pour mieux reconnaître les formats
w=min(self._width,self._height)
h=max(self._width,self._height)
err=100
ifabs(w-595)<errandabs(h-842)<err:
self._format="(A4)"
elifabs(w-842)<errandabs(h-1180)<err:
self._format="(A3)"
ifself._pages<=0:
raiseFichierInvalide(u"Impossible de lire le nombre de pages",path_to_pdf)
ifnotself._formatin['(A4)','(A3)']:
pass
#raise FichierInvalide, u"Seuls les formats A3 et A4 sont supportes"
# calcule le prix de l'encre tout de suite
self._calcule_prix()
def_uniq_jid(self):
""" Alloue un jid unique """
fname='/var/impression/jid'
## Maybe need a lock ?
try:
f=file(fname,'r+')
cur=int(f.read())+1
f.seek(0)
except(IOError,ValueError):
cur=0
f=file(fname,'w')
f.write(str(cur))
f.close()
returncur
def_pdfbook(self):
"""Génère un pdf livret équivalent et renvoie le chemin"""
newfile='/tmp/'+self.fileName()[-4]+'-book.pdf'
newfile='/tmp/book.pdf'
check_output(
['/usr/bin/pdfjam',self._fichier,
livret.pdfjam_order(self._pages),
'-o',newfile,
])
returnnewfile
defchangeSettings(self,**kw):
"""changeSettings([keyword=value])
Change les parametres de l'impression, recalcule et renvoie le nouveau prix.
"""
fornameinkw:
ifnamenotinself._settings:
raiseException('unknown %s option'%name)
self._settings[name].parse(kw[name])
ifself._settings['livret'].value:
self._settings['recto_verso'].parse(True)
self._settings['agrafage'].parse(None)
# TODO
# Check si l'agrafage et cie sont compatibles avec le nb de pages
returnself._calcule_prix()
defprintSettings(self):
"""printSettings()
Affiche les paramètres courants sur la sortie standard