diff --git a/impression/impression_canon.py b/impression/impression_canon.py index f114e068..c05037ee 100755 --- a/impression/impression_canon.py +++ b/impression/impression_canon.py @@ -35,6 +35,7 @@ sys.path.append('/usr/scripts/gestion') from config import impression as config_impression from commands import getstatusoutput import crans.utils.logs +from subprocess import Popen, PIPE # ######################################################## # # CONSTANTES # @@ -181,26 +182,24 @@ class impression: raise FichierInvalide, ("Le fichier ne semble pas etre un PDF", path_to_pdf) # on compte les pages et on regarde le format - try: - self._pdfinfo = os.popen("pdfinfo %s" % (self._fichier)) - except Exception, e: - raise FichierInvalide, u"pdfinfo n'arrive pas a lire le fichier (fichier protege par mot de passe?)" + pdfinfo = Popen(["pdfinfo",self._fichier],stdout=PIPE,stderr=PIPE).communicate() + if pdfinfo[1] <> '': + 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) self._pages = -1 - for line in self._pdfinfo: + for line in pdfinfo[0].split('\n'): if line.startswith('Pages'): self._pages = int(line.split()[1]) elif line.startswith('Page size'): size = line.split() 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] 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._height = float(size[4]) - self._format = size[6] 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 self._calcule_prix() @@ -460,7 +459,7 @@ class impression: options += ' -o sides=one-sided' else: if self._settings['recto_verso']: - options += ' -o sides=two-sided-short-edge' + options += ' -o sides=two-sided-short-edge -o landscape' else: options += ' -o sides=one-sided -o landscape' if self._settings['couleur']: