Helaas nog geen reacties
Ik hoop dat er mensen zijn hier die hier kaas van hebben gegeten, ik ben er namelijk nog niet helemaal uit.
Ik ben inmiddels al iets verder. Dit is wat ik tot nu toe heb:
class printer():
def __init__(self, parent=None):
self.parent = parent;
self.printer = None;
self.painter = None;
def load(self):
if(self.printer):
del self.printer;
if(self.painter):
del self.painter;
self.printer = QPrinter(QPrinter.PrinterResolution)
self.printer.setPageSize(self.printer.A4);
self.printer.setFullPage (True);
self.pages = [];
def addPage(self, textEdit):
self.pages.append(textEdit);
def handle(self):
self.painter = QPainter(self.printer)
l=1;
for i in self.pages:
rect = self.printer.pageRect();
size = self.printer.paperSize(QPrinter.Point);
html = i.toHtml();
QTextDoc = QTextDocument();
QTextDoc.setDefaultFont(i.font());
QTextDoc.setDocumentMargin(20);
QTextDoc.setTextWidth( rect.width() );
QTextDoc.setPageSize(size);
QTextDoc.setHtml(html);
QTextDoc.print_(self.printer);
QTextDoc.drawContents(self.painter);
if (l<len(self.pages)):
self.printer.newPage();
l=l+1;
self.painter.end()
def printSelection(self):
dialog = QtGui.QPrintDialog(self.printer)
if(dialog.exec_() == QtGui.QDialog.Accepted):
self.handle();
Een factuur zit in QTextEdit en die voeg ik voor het printen toe aan deze class via addPage(); Vervolgens roep ik printSelection aan.
Ik krijg nu netjes een dialog waar ik de printer kan selecteren en andere opties kan doen. Printen werkt nu.
Maar dit is volgens mij niet helemaal zoals het hoort.Sowieso wil ik nog eventueel een QPrintPreviewDialog erbij. Ook krijg ik de fout:
QPainter::begin: A paint device can only be painted by one painter at a time.
Overigens doe ik nu per pagina een QTextDocument aanmaken. Ik kreeg het idee dat deze class wel meerdere pagina's ondersteund. Alleen weet ik even niet hoe dit moet. Het zou denk ik wel een betere oplossing zijn.
Ik hoop dat iemand mij verder kan helpen