Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
etiquettes_pdf [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


etiquettes_pdf

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision Les deux révisions suivantes
etiquettes_pdf [2010/10/12 12:52]
tyrtamos
etiquettes_pdf [2010/10/14 06:32]
tyrtamos
Ligne 37: Ligne 37:
 # -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
 from __future__ import division from __future__ import division
-# ecrit en Python 2.7 
  
 import os, sys import os, sys
Ligne 43: Ligne 42:
 from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
  
-App = QtGui.QApplication(sys.argv)+Apppdf = QtGui.QApplication(sys.argv)
  
 ############################################################################# #############################################################################
 class Etiquettespdf(object): class Etiquettespdf(object):
-    """Imprime en .pdf et affiche la liste d'étiquettes à imprimer """+    """Imprime en fichier .pdf et affiche la liste d'étiquettes à imprimer"""
                
     # =======================================================================     # =======================================================================
Ligne 53: Ligne 52:
         """Initialise toutes les variables nécessaires         """Initialise toutes les variables nécessaires
         etiq: liste des chaines, éventuellement multilignes (avec os.linesep)         etiq: liste des chaines, éventuellement multilignes (avec os.linesep)
-        deph: point de départ à partir du bord gauche de la feuille (mm) +        deph: point de départ en mm à partir du bord gauche de la feuille 
-        pash: pas horizontal entre 2 étiquettes (mm)+        pash: pas horizontal en mm entre 2 étiquettes
         nbeh: nombre d'étiquettes en horizontal         nbeh: nombre d'étiquettes en horizontal
-        depv: point de départ à partir du bord supérieur de la feuille (mm)+        depv: point de départ en mm à partir du bord supérieur de la feuille
         pasv: pas vertical entre 2 étiquettes (mm)         pasv: pas vertical entre 2 étiquettes (mm)
         nbev: nombre d'étiquettes en vertical         nbev: nombre d'étiquettes en vertical
Ligne 70: Ligne 69:
         self.font = font         self.font = font
                  
-        # Les variables suivantes (modifiables) ont une valeur par défaut +        # Les var. suivantes (modifiables) ont une valeur par défaut 
-        self.resolution = 300 dpi +         
-        self.nomfichierpdf = u"etiquettes.pdf"peut comporter un chemin +        nom du fichier pdf à créer 
-        self.nomapplication = u"etiquettes.py" # application ayant créé le pdf +        self.nomfichierpdf = u"etiquettes.pdf" 
-        self.nomdocument = u"Impression d'étiquettes" # nom du pdf créé+        nom de l'application qui crée le fichier pdf 
 +        self.nomapplication = u"" 
 +        nom du document pdf créé 
 +        self.nomdocument = u"" 
 +        orientation de la page à imprimer
         self.orientation = QtGui.QPrinter.Portrait         self.orientation = QtGui.QPrinter.Portrait
 +        # format de la page à imprimer
         self.formatpage = QtGui.QPrinter.A4         self.formatpage = QtGui.QPrinter.A4
-        self.alignement = QtCore.Qt.AlignLeft # alignement dans l'étiquette+        # alignement de l'impression sur les étiquettes 
 +        self.alignement = QtCore.Qt.AlignLeft
  
     # =======================================================================     # =======================================================================
-    def imprimepdf(self):+    def imprime(self):
         """Lance l'impression des étiquettes dans le fichier pdf donné"""         """Lance l'impression des étiquettes dans le fichier pdf donné"""
                  
-        # conversion en pixels des distances données en mm 
-        deph = int(self.deph/25.4*self.resolution) 
-        pash = int(self.pash/25.4*self.resolution) 
-        depv = int(self.depv/25.4*self.resolution) 
-        pasv = int(self.pasv/25.4*self.resolution) 
-         
-        # Calcul du nombre de pages: 
-        pages, sup = divmod(len(self.etiq), self.nbeh*self.nbev) 
-        if sup > 0: 
-            # dans ce cas, il y a une dernière page incomplète 
-            pages += 1 
-                 
         # création de l'instance printer => fichier etiquettes.pdf         # création de l'instance printer => fichier etiquettes.pdf
-        printer = QtGui.QPrinter()+        printer = QtGui.QPrinter(QtGui.QPrinter.HighResolution)
         printer.setOutputFileName(self.nomfichierpdf)         printer.setOutputFileName(self.nomfichierpdf)
         printer.setCreator(self.nomapplication)         printer.setCreator(self.nomapplication)
Ligne 102: Ligne 95:
         printer.setPageSize(self.formatpage)         printer.setPageSize(self.formatpage)
         printer.setOrientation(self.orientation)         printer.setOrientation(self.orientation)
-        printer.setResolution(self.resolution) 
         printer.setFullPage(True)         printer.setFullPage(True)
 +        resolution = printer.resolution() # en principe, c'est 1200dpi
                  
 +        # conversion en pixels des distances données en mm
 +        mm2px = lambda mm: int(mm/25.4*resolution)
 +        deph = mm2px(self.deph)
 +        pash = mm2px(self.pash)
 +        depv = mm2px(self.depv)
 +        pasv = mm2px(self.pasv)
 +        
 +        # Calcul du nombre de pages:
 +        pages, sup = divmod(len(self.etiq), self.nbeh*self.nbev)
 +        if sup > 0:
 +            # dans ce cas, il y a une dernière page incomplète
 +            pages += 1
 +                
 +        # page à créer
         painter = QtGui.QPainter()         painter = QtGui.QPainter()
                  
 +        # impression sur le fichier pdf
         painter.begin(printer)         painter.begin(printer)
         if self.font!=None:         if self.font!=None:
             painter.setFont(self.font)             painter.setFont(self.font)
-        k = 0 # compteur du nombre d'étiquettes imprimés+        k = 0 # compteur du nombre d'étiquettes imprimées
         for page in xrange(1, pages+1):         for page in xrange(1, pages+1):
-            v = depv+            v = depv # initialisation de la coordonnée verticale de chaque étiquette
             for i in xrange(self.nbev):             for i in xrange(self.nbev):
                 # traiter chaque ligne d'étiquette de la page                 # traiter chaque ligne d'étiquette de la page
-                h = deph+                h = deph# initialisation de la coordonnée horizontale de chaque étiquette
                 for j in xrange(self.nbeh):                 for j in xrange(self.nbeh):
                     # traiter chaque étiquette de la ligne                     # traiter chaque étiquette de la ligne
Ligne 130: Ligne 138:
  
     # =======================================================================     # =======================================================================
-    def affichepdf(self):+    def affiche(self):
         """affiche le pdf créé, dans le visualiseur pdf par défaut de l'OS"""         """affiche le pdf créé, dans le visualiseur pdf par défaut de l'OS"""
         if os.path.exists(self.nomfichierpdf):         if os.path.exists(self.nomfichierpdf):
Ligne 137: Ligne 145:
                 os.startfile(self.nomfichierpdf)                 os.startfile(self.nomfichierpdf)
             except:             except:
-                # solution pour Linux récents+                # solution pour les Linux récents
                 os.system('xdg-open ' + self.nomfichierpdf)                 os.system('xdg-open ' + self.nomfichierpdf)
  
Ligne 143: Ligne 151:
 if __name__ == "__main__": if __name__ == "__main__":
          
-    # fabrication pour l'exemple d'une liste de chaines à mettre dans les 32 étiquettes+    #======================================================================== 
 +    # test pour les étiquettes
     etiq = []     etiq = []
     for i in xrange(32):     for i in xrange(32):
Ligne 164: Ligne 173:
          
     etiquettes = Etiquettespdf(etiq, deph, pash, nbeh, depv, pasv, nbev, font)     etiquettes = Etiquettespdf(etiq, deph, pash, nbeh, depv, pasv, nbev, font)
-    etiquettes.imprimepdf() +    etiquettes.imprime() 
-    etiquettes.affichepdf()+    etiquettes.affiche()
 </code> </code>
  
etiquettes_pdf.txt · Dernière modification: 2015/11/01 16:26 de tyrtamos