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 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| #!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
# Python 2.7
import sys, os
from PyQt4 import QtCore, QtGui
#############################################################################
def affichecran(fichier):
"""affiche le fichier avec le viewer par défaut de l'OS"""
if os.path.exists(fichier):
# tentative d'affichage pour Windows
try:
os.startfile(fichier)
return
except Exception:
pass
# ça n'a pas marché: on essaye Linux
try:
os.system('xdg-open ' + fichier)
return
except Exception:
pass
# aucun des affichages ci-dessus ne marche: on ne fait rien!
#############################################################################
app = QtGui.QApplication(sys.argv)
# créer le document
doc = QtGui.QTextDocument()
cur = QtGui.QTextCursor(doc)
# créer le format de la table
tableFormat = QtGui.QTextTableFormat()
tableFormat.setBorder(0)
tableFormat.setCellPadding(0)
tableFormat.setCellSpacing(15)
# insérer la table 3x3 avec ce format
imax, jmax = 3, 3
table = cur.insertTable(imax, jmax, tableFormat)
# écrire un nombre dans toutes les cases
for i in range(0,3):
for j in range(0, 3):
cellCur = table.cellAt(i, j).firstCursorPosition()
cellCur.select(QtGui.QTextCursor.LineUnderCursor) # sélectionner la ligne
cellCur.removeSelectedText() # effacer le texte antérieur
cellCur.insertText(u"%d" % (i*imax+j,))
#============================================================================
# créer une 2e table de taille 1,1, de format 'tableFormat2 ' dans la case 1,2
# curseur de la case 1,2
cellCur = table.cellAt(1, 2).firstCursorPosition()
# effacement du contenu éventuel de la case 1,2 pour insérer la table2
cellCur.select(QtGui.QTextCursor.LineUnderCursor) # sélectionner la ligne
cellCur.removeSelectedText() # effacer la ligne sélectionnée
# créer le nouveau format de la table2 à insérer dans la case 1,2
tableFormat2 = QtGui.QTextTableFormat()
tableFormat2.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
tableFormat2.setBorder(1) # avec un entourage d'1 pixel
tableFormat2.setCellPadding(2) # espacement de l'entourage du nombre
tableFormat2.setCellSpacing(0) # espacement de l'entourage dans la case
# insérer la table 1x1 dans la case 1,2 avec le format 'tableformat2'
table2 = cellCur.insertTable(1, 1, tableFormat2)
# et y placer le texte '5'
cellCur2 = table2.cellAt(0, 0).firstCursorPosition()
cellCur2.insertText(u"%d" % (5,))
#============================================================================
# imprimer dans un pdf
fichierpdf = "sample.pdf"
printer = QtGui.QPrinter(QtGui.QPrinter.HighResolution)
printer.setOutputFormat(QtGui.QPrinter.PdfFormat)
printer.setOutputFileName(fichierpdf)
doc.print_(printer)
# afficher le fichier pdf à l'écran en utilisant le pdfreader par défaut
affichecran(fichierpdf) |
Partager