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
# /usr/lib/cups/backend/devis et /usr/lib/cups/backend/laserjet
# Écrit par Benoit
# modifié par Brice DUBOST
# Écrit initial par Benoit
# modifié par Brice DUBOST et Benoit
import locale
locale.setlocale(locale.LC_ALL, 'fr_FR')
@ -30,17 +30,21 @@ class cout:
format="NON_VALIDE"
erreur=""
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
* media vaut transparent le cas écheant (dans ce cas format=A4)
* mode_couleur = Couleur pour traiter en couleur
* recto_v = Recto si l'on ne desire pas un recto-verso
* format vaut A3 ou A4 selon le bac choisi
* 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
"""
# 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
# on compte le nb de copies et on enlève les balises pour ne pas recalculer
nb_copie_ps=0
@ -100,6 +104,7 @@ class cout:
cout_noir = impression.c_noir
if (media == "transparent"):
c_format = impression.c_trans
self.media="transparent"
else:
c_format = impression.c_a4
@ -138,13 +143,16 @@ class cout:
os.system("rm -f '%s'" % (file))
self.total_noir = remplissage[3]
self.total_couleur = sum(remplissage[0:3])
self.faces = remplissage[4]
self.faces = int(remplissage[4])
if (recto_v == "Recto"):
self.pages = self.faces # nb de pages par copies
else:
self.pages = int(self.faces/2.+0.5)
if self.total_couleur > 0:
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:
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
for file in string.split(commands.getoutput("ls '%s'*.png" % (fichier)),"\n"):
resultats = commands.getoutput("/usr/scripts/impression/percentblack '%s'" % (file))
@ -153,7 +161,7 @@ class cout:
remplissage[1] += float(l_resultats[1])
os.system("rm -f '%s'" % (file))
self.total_noir = remplissage[0]
self.faces = remplissage[1]
self.faces = int(remplissage[1])
if (recto_v == "Recto"):
self.pages = self.faces # nb de pages par copies
else:
@ -163,7 +171,7 @@ class cout:
self.c_total_euros=float(self.c_total)/100
os.system("rm -f '%s'*.png" %(fichier))
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"
@ -176,27 +184,31 @@ class cout:
if self.format=="NON_VALIDE":
format=u"Le format de papier que vous avez demandé n'est pas valide"
else:
if self.media=="transparent":
format="transparent A4"
else:
format=self.format
try:
return template % { 'prix' : str_cout }
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):
"""Renvoie le cout formaté en html"""
# Format du PS (parfois different de celui choisi)
# 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>
<li><b>Noir (par copie)</b> : %(noir)s%% </li>
<li><b>Couleur (par copie)</b> : %(couleur)s%% </li>
<li><b>Nombre de faces (par copie)</b> : %(faces)s </li>
<li><b>Nombre de pages (par copie)</b> : %(pages)s </li>
<li><b>Nombre de copies</b> : %(copies)s</li></ul><br>
<br><b>Prix total : %(prix)s </b>
</p>\n<p>
<li><b>Pour une copie :</b>
<ul><li>Noir : %(noir)s unités </li>
<li>Couleur : %(couleur)s unités </li>
<li>Nombre de faces : %(faces)s </li>
<li>Nombre de pages : %(pages)s </li></ul></li>
<li><b>Nombre de copies</b> : %(copies)s </li></ul>
<br>
<font size="3"><b>Prix total : %(prix)s </b></font>
</p>\n"""
if not self.erreur: