Bonjour à Tous,
Je suis toujours à la recherche d'un bon prototype simple et robuste pour l'impression d'une QTableview (entre autres) sans coupure en bas de page et capable de gérer des headers et des footers.
Je creuse en ce moment la solution : pdf à partir d'un code HTML + CSS.
Avec l'aide de Tyrtamos http://www.developpez.net/forums/d14...-d-css/http://, j'ai réussi tant bien que mal à comprendre comment utiliser une feuille CSS pour pouvoir mettre (quelques) mises en forme intéressantes ...
J'ai trouvé un utilitaire intéressant pour pouvoir générer rapidement et dynamiquement du code HTML : http://markup.sourceforge.net/. Pour gérer l'entête de la table j'utilise simplement les tags "thead, th" que l'on peut facilement personnaliser dans le CSS. Je sèche par contre pour le bas de page le tag "tfoot" n'étant pas supporté pour le rich text http://doc-snapshot.qt-project.org/4...ock-attributes.
Par contre, il apparait en bas à droite de chaque page imprimée le numéro de page. Existe t-il un moyen de le personnaliser voire de le supprimer ?
Merci pour vos pistes ou suggestions.
@+
Le code actuel (c'est un code à minima sans amélioration ni optimisation) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 enteteDoc = [" En Tete de Document "] listeData = [ "-- Col1 --", "-- Col2 --", "-- Col3 --", "----- Col4 ------" ] import markup page = markup.page() page.init( title = "Liste des recettes", lang = "fr", css= ('style1.css'), charset = 'utf-8',) # Je simule une table avec 150 lignes et 4 colonnes nbLig = 150 nbCol = len(listeData) page.table.open(class_= 'mytable', border = 1) #======================================================================= # En-tête #======================================================================= page.thead.open() page.tr.open() page.th(enteteDoc, colspan = str(nbCol)) page.tr.close() page.tr.open() for e in listeData: page.th("Entete : " + e, class_= "elem") page.tr.close() page.thead.close() for row in range(nbLig): page.tr.open() for column in range(nbCol): item = "Ligne % s" % row + listeData[column] page.td(item, align="right") page.tr.close() page.table.close() self.nomfichierpdf = u"test.pdf" printer = QtGui.QPrinter(QtGui.QPrinter.HighResolution) printer.setOutputFileName(self.nomfichierpdf) doc = QtGui.QTextDocument() doc.setHtml(str(page)) doc.print_(printer) os.startfile(self.nomfichierpdf)
Partager