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 63 64 65 66 67 68 69 70 71 72 73
| import PIL
from reportlab.pdfgen.canvas import Canvas
from PyDbLite import Base
from reportlab.lib import colors
from reportlab.lib.units import cm
from reportlab.lib.pagesizes import A4
from reportlab.platypus import Paragraph, SimpleDocTemplate,Table, TableStyle
class Report:
"mise en place du rapport"
def __init__(self,liste_vues,reg):
self.reg=reg
self.liste_vues=liste_vues
db=Base(self.reg)
db.open()
db1=Base('acr_reg')
db1.open()
t=[r['type'] for r in db1 if r['reg']==self.reg]
self.acr_type=t[0]
print t
c=Canvas(self.reg+".pdf")
print self.acr_type
for r in self.liste_vues:
c.drawImage(self.acr_type+'\\'+r+'.gif',100,350,350,350)
self.liste=[r1 for r1 in db if r1['vue']==r]
print self.liste
for r1 in self.liste:
self.posx=r1['x']
self.posy=r1['y']
self.nbr=r1['num']
self.posx1=100+((self.posx*350)/600)
self.posy1=700-((self.posy*350)/600)
c.setFillColorRGB(0,0,0)
c.rect(self.posx1-4,self.posy1-4,8,8,fill=1)
c.setFillColorRGB(255,255,255)
self.num=int(self.nbr)
self.num=str(self.nbr)
if self.nbr<10:
c.setFont("Helvetica",8)
c.drawString(self.posx1-2,self.posy1-3,self.num)
else:
c.setFont("Helvetica",8)
c.drawString(self.posx1-5,self.posy1-3,self.num)
data=[('Item Nbr','Description','Location','Report Date','Manual Ref','Repair Interval','Insp Interval'),]
for r2 in self.liste:
liste2=[r2['num'],r2['Description'],r2['location'],r2['date'],r2['doc'],r2['repair_int'],r2['insp_int']]
data.append(liste2)
print data
t=Table(data)
w,h = t.wrapOn(c,2000)
t.drawOn(c,70,250)
c.showPage()
c.save() |
Partager