[impression_canon] -o landscape pour le recto-verso

darcs-hash:20111006161440-28565-21d8c3dd06f359bc1ddff854fed62fb71b2bfb5d.gz
This commit is contained in:
Daniel STAN 2011-10-06 18:14:40 +02:00
parent 6c85740dd2
commit 60c4f0935f

View file

@ -35,6 +35,7 @@ sys.path.append('/usr/scripts/gestion')
from config import impression as config_impression from config import impression as config_impression
from commands import getstatusoutput from commands import getstatusoutput
import crans.utils.logs import crans.utils.logs
from subprocess import Popen, PIPE
# ######################################################## # # ######################################################## #
# CONSTANTES # # CONSTANTES #
@ -181,26 +182,24 @@ class impression:
raise FichierInvalide, ("Le fichier ne semble pas etre un PDF", path_to_pdf) raise FichierInvalide, ("Le fichier ne semble pas etre un PDF", path_to_pdf)
# on compte les pages et on regarde le format # on compte les pages et on regarde le format
try: pdfinfo = Popen(["pdfinfo",self._fichier],stdout=PIPE,stderr=PIPE).communicate()
self._pdfinfo = os.popen("pdfinfo %s" % (self._fichier)) if pdfinfo[1] <> '':
except Exception, e: raise FichierInvalide(u"pdfinfo n'arrive pas a lire le fichier (il est peut-etre corrompu ou protege par un mot de passe)",path_to_pdf)
raise FichierInvalide, u"pdfinfo n'arrive pas a lire le fichier (fichier protege par mot de passe?)"
self._pages = -1 self._pages = -1
for line in self._pdfinfo: for line in pdfinfo[0].split('\n'):
if line.startswith('Pages'): if line.startswith('Pages'):
self._pages = int(line.split()[1]) self._pages = int(line.split()[1])
elif line.startswith('Page size'): elif line.startswith('Page size'):
size = line.split() size = line.split()
if len(size) <= 6: if len(size) <= 6:
raise FichierInvalide, u"Format de page inconnu" raise FichierInvalide(u"Format de page inconnu",path_to_pdf)
self._format = size[6] self._format = size[6]
if not self._format in ['(A4)','(A3)']: if not self._format in ['(A4)','(A3)']:
raise FichierInvalide, u"Seuls les formats A3 et A4 sont supportés" raise FichierInvalide, u"Seuls les formats A3 et A4 sont supportes"
self._width = float(size[2]) self._width = float(size[2])
self._height = float(size[4]) self._height = float(size[4])
self._format = size[6]
if self._pages <= 0: if self._pages <= 0:
raise FichierInvalide, u"Impossible de lire le nombre de pages" raise FichierInvalide(u"Impossible de lire le nombre de pages",path_to_pdf)
# calcule le prix de l'encre tout de suite # calcule le prix de l'encre tout de suite
self._calcule_prix() self._calcule_prix()
@ -460,7 +459,7 @@ class impression:
options += ' -o sides=one-sided' options += ' -o sides=one-sided'
else: else:
if self._settings['recto_verso']: if self._settings['recto_verso']:
options += ' -o sides=two-sided-short-edge' options += ' -o sides=two-sided-short-edge -o landscape'
else: else:
options += ' -o sides=one-sided -o landscape' options += ' -o sides=one-sided -o landscape'
if self._settings['couleur']: if self._settings['couleur']: