Gestion de la couleur et du format transparent.

faces est un entier.
Changement du format de sortie qui devrait tre plus comprhensible
au niveau de la signification des paramtres.

darcs-hash:20050629084822-061a7-66f6562530f61dcbe37dbcab8694c403f5b90b4a.gz
This commit is contained in:
rozel 2005-06-29 10:48:22 +02:00
parent c2c069d820
commit a2bc55607a

View file

@ -3,8 +3,8 @@
# Utilisé par /var/www/impression/analyse.py # Utilisé par /var/www/impression/analyse.py
# /usr/lib/cups/backend/devis et /usr/lib/cups/backend/laserjet # /usr/lib/cups/backend/devis et /usr/lib/cups/backend/laserjet
# Écrit par Benoit # Écrit initial par Benoit
# modifié par Brice DUBOST # modifié par Brice DUBOST et Benoit
import locale import locale
locale.setlocale(locale.LC_ALL, 'fr_FR') locale.setlocale(locale.LC_ALL, 'fr_FR')
@ -30,17 +30,21 @@ class cout:
format="NON_VALIDE" format="NON_VALIDE"
erreur="" erreur=""
recto_v="None" recto_v="None"
media=""
def __init__(self,fichierps, mode_couleur, recto_v="None", format="A4", nb_copie=1, media="" ): def __init__(self, fichierps, media="", mode_couleur="Couleur", recto_v="None", format="A4", nb_copie=1):
""" * fichierps est le fichier PostScript (ou pdf) à analyser """ * fichierps est le fichier PostScript (ou pdf) à analyser
* media vaut transparent le cas écheant (dans ce cas format=A4)
* mode_couleur = Couleur pour traiter en couleur * mode_couleur = Couleur pour traiter en couleur
* recto_v = Recto si l'on ne desire pas un recto-verso * recto_v = Recto si l'on ne desire pas un recto-verso
* format vaut A3 ou A4 selon le bac choisi * format vaut A3 ou A4 selon le bac choisi
* nb_copie est le nombre de copies désirées * nb_copie est le nombre de copies désirées
* media vaut transparent le cas écheant (dans ce cas format=A4)
Le PostScript a toujours priorité sur ces parametres Le PostScript a toujours priorité sur ces parametres
""" """
# Pour la couleur, je n'ai pas trouve de methode valables tout le temps
# Le plus simple reste donc de voir s'il y a 0% de couleur dans le ps.
self.nb_copie=nb_copie self.nb_copie=nb_copie
# on compte le nb de copies et on enlève les balises pour ne pas recalculer # on compte le nb de copies et on enlève les balises pour ne pas recalculer
nb_copie_ps=0 nb_copie_ps=0
@ -100,6 +104,7 @@ class cout:
cout_noir = impression.c_noir cout_noir = impression.c_noir
if (media == "transparent"): if (media == "transparent"):
c_format = impression.c_trans c_format = impression.c_trans
self.media="transparent"
else: else:
c_format = impression.c_a4 c_format = impression.c_a4
@ -138,13 +143,16 @@ class cout:
os.system("rm -f '%s'" % (file)) os.system("rm -f '%s'" % (file))
self.total_noir = remplissage[3] self.total_noir = remplissage[3]
self.total_couleur = sum(remplissage[0:3]) self.total_couleur = sum(remplissage[0:3])
self.faces = remplissage[4] self.faces = int(remplissage[4])
if (recto_v == "Recto"): if (recto_v == "Recto"):
self.pages = self.faces # nb de pages par copies self.pages = self.faces # nb de pages par copies
else: else:
self.pages = int(self.faces/2.+0.5) self.pages = int(self.faces/2.+0.5)
self.c_total = c_format*self.pages+(impression.c_tambour_coul+impression.c_tambour_noir)*self.faces+cout_noir*self.total_noir+cout_coul*self.total_couleur if self.total_couleur > 0:
else: self.c_total = c_format*self.pages+(impression.c_tambour_coul+impression.c_tambour_noir)*self.faces+cout_noir*self.total_noir+cout_coul*self.total_couleur
else: # Pas de couleur
self.c_total = c_format*self.pages+impression.c_tambour_noir*self.faces+cout_noir*self.total_noir
else: # Utile pour la page web
remplissage = [0, 0] # Noir, nombre de pages remplissage = [0, 0] # Noir, nombre de pages
for file in string.split(commands.getoutput("ls '%s'*.png" % (fichier)),"\n"): for file in string.split(commands.getoutput("ls '%s'*.png" % (fichier)),"\n"):
resultats = commands.getoutput("/usr/scripts/impression/percentblack '%s'" % (file)) resultats = commands.getoutput("/usr/scripts/impression/percentblack '%s'" % (file))
@ -153,7 +161,7 @@ class cout:
remplissage[1] += float(l_resultats[1]) remplissage[1] += float(l_resultats[1])
os.system("rm -f '%s'" % (file)) os.system("rm -f '%s'" % (file))
self.total_noir = remplissage[0] self.total_noir = remplissage[0]
self.faces = remplissage[1] self.faces = int(remplissage[1])
if (recto_v == "Recto"): if (recto_v == "Recto"):
self.pages = self.faces # nb de pages par copies self.pages = self.faces # nb de pages par copies
else: else:
@ -163,7 +171,7 @@ class cout:
self.c_total_euros=float(self.c_total)/100 self.c_total_euros=float(self.c_total)/100
os.system("rm -f '%s'*.png" %(fichier)) os.system("rm -f '%s'*.png" %(fichier))
else: else:
self.erreur=u"ERREUR : Fichier Postscript invalide. aucun png a été créé\n" self.erreur=u"ERREUR : Fichier Postscript invalide. Aucun png n'a été créé\n"
@ -177,26 +185,30 @@ class cout:
if self.format=="NON_VALIDE": if self.format=="NON_VALIDE":
format=u"Le format de papier que vous avez demandé n'est pas valide" format=u"Le format de papier que vous avez demandé n'est pas valide"
else: else:
format=self.format if self.media=="transparent":
format="transparent A4"
else:
format=self.format
try: try:
return template % { 'prix' : str_cout } return template % { 'prix' : str_cout }
except: except:
return template % { 'noir' : "%2.2f" % (self.total_noir/self.faces), 'couleur' : "%2.2f" % (self.total_couleur/self.faces), 'faces' :int(self.faces), 'pages' : int(self.pages), 'copies' : self.nb_copie, 'format' : format, 'prix' : str_cout} return template % { 'noir' : self.total_noir, 'couleur' : self.total_couleur, 'faces' : self.faces, 'pages' : self.pages, 'copies' : self.nb_copie, 'format' : format, 'prix' : str_cout}
def html_cout(self): def html_cout(self):
"""Renvoie le cout formaté en html""" """Renvoie le cout formaté en html"""
# Format du PS (parfois different de celui choisi) # Format du PS (parfois different de celui choisi)
# Utile pour deboguage, sera supprime apres # Utile pour deboguage, sera supprime apres
template = """<h2>Résultats : </h2> template = """<b>Résultats : </b>
<ul><li><b>Format de l'impression</b> : %(format)s </li> <ul><li><b>Format de l'impression</b> : %(format)s </li>
<li><b>Noir (par copie)</b> : %(noir)s%% </li> <li><b>Pour une copie :</b>
<li><b>Couleur (par copie)</b> : %(couleur)s%% </li> <ul><li>Noir : %(noir)s unités </li>
<li><b>Nombre de faces (par copie)</b> : %(faces)s </li> <li>Couleur : %(couleur)s unités </li>
<li><b>Nombre de pages (par copie)</b> : %(pages)s </li> <li>Nombre de faces : %(faces)s </li>
<li><b>Nombre de copies</b> : %(copies)s</li></ul><br> <li>Nombre de pages : %(pages)s </li></ul></li>
<br><b>Prix total : %(prix)s </b> <li><b>Nombre de copies</b> : %(copies)s </li></ul>
</p>\n<p> <br>
<font size="3"><b>Prix total : %(prix)s </b></font>
</p>\n""" </p>\n"""
if not self.erreur: if not self.erreur: