1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| #!/usr/bin/python
# -*- coding: utf-8 -*-
#Python 3.2
import sys, os
from PySide import QtCore, QtGui
app = QtGui.QApplication(sys.argv)
ingrient='Cacao en poudre'
poids ='10'
unit='grs'
c=ingrient+poids+unit
d='Méthode et conseil de fabrication'
doc=QtGui.QTextDocument(c+d)
fichierpdf = "Fiche Technique.pdf"
printer = QtGui.QPrinter()
printer.setPaperSize(QtGui.QPrinter.A4)
printer.setOrientation(QtGui.QPrinter.Portrait)
printer.setOutputFormat(QtGui.QPrinter.PdfFormat)
printer.setOutputFileName(fichierpdf)
# pour convertir des mm en pixels en utilisant la résolution
resolution = printer.resolution()
mm2px = lambda mm: int(mm/25.4*resolution)
MargeGauche = mm2px(30)#113
MargeHaute = mm2px(40)#151
MargeDroite = mm2px(10)#37
MargeBasse = mm2px(40)#151
printer.setPageMargins(MargeGauche, MargeHaute, MargeDroite, MargeBasse,
QtGui.QPrinter.DevicePixel)
innerRect = printer.pageRect()
sizeF = QtCore.QSizeF(innerRect.size().width(), innerRect.size().height())
doc.setPageSize(sizeF)
contentRect = QtCore.QRect(QtCore.QPoint(0,0), doc.size().toSize())
currentRect = QtCore.QRect(QtCore.QPoint(0,0), innerRect.size())
painter = QtGui.QPainter(printer)#première page d'impression
count = 0
painter.save()
while currentRect.intersects(contentRect):
doc.drawContents(painter, QtCore.QRectF(currentRect))
count += 1
currentRect.translate(0, currentRect.height())
painter.restore()
w="Fiche technique"
# impression en-tête (0,0 => coin haut et gauche de la zone d'impression)
painter.setFont(QtGui.QFont("Arial", 30))
painter.drawText(0, -mm2px(10), w)#titre
painter.save()
painter.translate(0, -currentRect.height() * count)
if currentRect.intersects(contentRect):
printer.newPage()#ajoute une nouvelle page d'impression
painter.restore()
painter.end()#termine l'impression
# affichage du pdf par le viewer pdf par défaut de l'OS
if os.path.exists(fichierpdf):
try:
os.startfile(fichierpdf) # solution pour Windows
except:
os.system('xdg-open ' + fichierpdf)# solution pour les Linux récents |
Partager