Ci-dessous, les différences entre deux révisions de la page.
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 |
############################################################################# | ############################################################################# | ||
class Etiquettespdf(object): | class Etiquettespdf(object): | ||
- | """ | + | """ |
# ======================================================================= | # ======================================================================= | ||
Ligne 53: | Ligne 52: | ||
""" | """ | ||
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 | + | deph: point de départ |
- | pash: pas horizontal entre 2 étiquettes | + | pash: pas horizontal |
nbeh: nombre d' | nbeh: nombre d' | ||
- | depv: point de départ à partir du bord supérieur de la feuille | + | depv: point de départ |
pasv: pas vertical entre 2 étiquettes (mm) | pasv: pas vertical entre 2 étiquettes (mm) | ||
nbev: nombre d' | nbev: nombre d' | ||
Ligne 70: | Ligne 69: | ||
self.font = font | self.font = font | ||
| | ||
- | # Les variables | + | # Les var. suivantes (modifiables) ont une valeur par défaut |
- | | + | |
- | self.nomfichierpdf = u" | + | |
- | self.nomapplication = u"etiquettes.py" # application ayant créé le pdf | + | self.nomfichierpdf = u" |
- | self.nomdocument = u"Impression d' | + | |
+ | self.nomapplication = u"" | ||
+ | | ||
+ | self.nomdocument = u"" | ||
+ | | ||
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 | + | |
+ | | ||
# ======================================================================= | # ======================================================================= | ||
- | def imprimepdf(self): | + | def imprime(self): |
""" | """ | ||
| | ||
- | # conversion en pixels des distances données en mm | ||
- | deph = int(self.deph/ | ||
- | pash = int(self.pash/ | ||
- | depv = int(self.depv/ | ||
- | pasv = int(self.pasv/ | ||
- | | ||
- | # Calcul du nombre de pages: | ||
- | pages, sup = divmod(len(self.etiq), | ||
- | if sup > 0: | ||
- | # dans ce cas, il y a une dernière page incomplète | ||
- | pages += 1 | ||
- | | ||
# création de l' | # création de l' | ||
- | 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/ | ||
+ | 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), | ||
+ | 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' | + | k = 0 # compteur du nombre d' |
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' | # traiter chaque ligne d' | ||
- | 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): |
""" | """ | ||
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(' | os.system(' | ||
Ligne 143: | Ligne 151: | ||
if __name__ == " | if __name__ == " | ||
| | ||
- | # fabrication | + | #======================================================================== |
+ | # test pour les étiquettes | ||
etiq = [] | etiq = [] | ||
for i in xrange(32): | for i in xrange(32): | ||
Ligne 164: | Ligne 173: | ||
| | ||
etiquettes = Etiquettespdf(etiq, | etiquettes = Etiquettespdf(etiq, | ||
- | etiquettes.imprimepdf() | + | etiquettes.imprime() |
- | etiquettes.affichepdf() | + | etiquettes.affiche() |
</ | </ | ||