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
|
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle
from reportlab.rl_config import defaultPageSize
from reportlab.lib.units import inch, cm
from reportlab.lib import colors
PAGE_HEIGHT=defaultPageSize[1]
PAGE_WIDTH=defaultPageSize[0]
nomDoc = "mon_doc.pdf"
doc = SimpleDocTemplate(nomDoc)
story = []
# Style du tableau
style = TableStyle([('GRID', (0,0), (-1,-2), 0.25, colors.black),
('VALIGN', (0,0), (-1,-1), 'TOP'), # Centre verticalement toutes les cases
('ALIGN', (0,0), (-1,-1), 'LEFT'), # Titre du groupe à gauche
('ALIGN', (0,1), (0,-1), 'RIGHT'), # Colonne dates alignée à droite
('ALIGN', (1,1), (1,-2), 'LEFT'), # Colonne tâches alignée à gauche
('ALIGN', (2,1), (2,-1), 'CENTRE'), # Colonne temps alignée au centre
('SPAN',(0,-1),(1,-1)), # Fusionne les 2 lignes du bas pour faire case Total
('SPAN',(0,0),(2,0)), # Fusionne les 3 lignes du haut pour faire le titre du groupe
('FONT',(0,0),(-1,-1), "Helvetica", 8), # Donne la police de caract. + taille de police
('FONT',(0,0),(0,0), "Helvetica-Bold", 8), # Donne la police de caract. + taille de police du titre de groupe
('FONT',(0,-1),(-1,-1), "Helvetica", 6), # Donne la police de caract. + taille de police de la ligne de total
('BACKGROUND', (0,0), (2,0), colors.moccasin), # Donne la couleur de fond du titre de groupe
])
largeursColonnes = (150, 320, 50)
# Création du titre du tableau
dataTableau = [("Titre col1", "Titre col2" , "Tite col3"),]
# Création de chaque ligne
for texte1, texte2, texet3 in listeLignes :
# Intégration données dans le tableau
dataTableau.append( (texte1, texte2, texte3) )
# Création du tableau
tableau = Table(dataTableau, largeursColonnes)
tableau.setStyle(style)
story.append(tableau)
# Finalisation et enregistrement du PDF
doc.build(story)
# Affichage du PDF
os.startfile(nomDoc) |
Partager