diff --git a/impression/impression_canon.py b/impression/impression_canon.py index a1ebbe8c..2afcf895 100755 --- a/impression/impression_canon.py +++ b/impression/impression_canon.py @@ -216,12 +216,22 @@ class impression: def _pdfbook(self): + page = "pdfinfo \"%s\" | grep Pages | awk '{print $2}'" % self._fichier + (status, npage) = getstatusoutput(page) + if status != 0: + self.log.error("pdfinfo status:%d | rep: %s" % (status, npage)) + raise FichierInvalide, ("pdfinfo: Impossible de trouver le nombre de page du fichier", + self._fichier) + if int(int(npage)/4*4) < int(npage): + sig=int((int(npage)/4 +1)*4) + else: + sig=int(npage) if self._settings['papier'] == 'A3': newfile = self._fichier[:-4] + '-a3book.pdf' - pdfbook = "pdfbook --paper a3paper %%s --outfile %s" % newfile + pdfbook = "pdfbook --signature %s --paper a3paper %%s --outfile %s" % (sig,newfile) else: newfile = self._fichier[:-4] + '-book.pdf' - pdfbook = "pdfbook %%s --outfile %s" % newfile + pdfbook = "pdfbook --signature %s %%s --outfile %s" % (sig,newfile) (status, rep) = getstatusoutput(pdfbook % self._fichier) self.log.info("%s | rep: %s" % ((pdfbook % self._fichier), rep)) self._fichier = newfile