Bilder und Linien mit painter von QPainter in pdf-Layout einfügen
Verfasst: Sonntag 9. Dezember 2018, 09:33
Ich möchte gerne das Layout meiner pdf-Seite mit Python vorgeben.
Hierfür benutze ich den QPainter, da meine Pdf von Informationen aus einer Destopapplikation entsteht welche ich mit PyQt5 erstellt habe.
Kopfzeile und und Fußzeile bekomme ich hin.
Leider mach ich noch etwas falsch ein Bild und eine horizontale Linie einzufügen.
Ich möchte gerne oben rechts ein Logo stehen haben und darunter über die ganze Seite einen horizontalen Strich.
Hier mein code
Hierfür benutze ich den QPainter, da meine Pdf von Informationen aus einer Destopapplikation entsteht welche ich mit PyQt5 erstellt habe.
Kopfzeile und und Fußzeile bekomme ich hin.
Leider mach ich noch etwas falsch ein Bild und eine horizontale Linie einzufügen.
Ich möchte gerne oben rechts ein Logo stehen haben und darunter über die ganze Seite einen horizontalen Strich.
Hier mein code
Code: Alles auswählen
def paintPage(self,pageNumber, pageCount, painter, doc, textRect, footerHeight):
painter.save()
textPageRect = QtCore.QRectF(QtCore.QPointF(0, pageNumber * doc.pageSize().height()), doc.pageSize())
painter.setClipRect(textRect)
painter.translate(0, -textPageRect.top())
painter.translate(textRect.left(), textRect.top())
doc.drawContents(painter)
painter.restore()
footerRect = QtCore.QRectF(textRect)
footerRect.setTop(textRect.bottom())
footerRect.setHeight(footerHeight)
headerRect = QtCore.QRectF(textRect)
headerRect.setTop(textRect.top())
headerRect.setHeight(2 * footerHeight)
# draw footer
painter.save()
pen = painter.pen()
pen.setColor(QtCore.Qt.black)
painter.setPen(pen)
painter.drawText(footerRect, QtCore.Qt.AlignCenter, "Seite {} von {}".format(pageNumber + 1, pageCount))
painter.drawText(headerRect, QtCore.Qt.AlignLeft, "{}\n{}".format('Projektname:', 'Projektnummer:'))
painter.drawPicture(headerRect, QtCore.Qt.AlignRight, "beispiel_bild.png") ## funktioniert leider nicht
painter.drawLine(headerRect, QtCore.Qt.AlignCenter) ## funktioniert leider nicht
painter.restore()