diff -r cb4e5bbf3a2c -r 3f5e8b0a338e eric6/E5Graphics/E5GraphicsView.py --- a/eric6/E5Graphics/E5GraphicsView.py Thu May 06 19:46:00 2021 +0200 +++ b/eric6/E5Graphics/E5GraphicsView.py Sat May 08 18:34:08 2021 +0200 @@ -345,22 +345,24 @@ (QPrinter) @param diagramName name of the diagram (string) """ - painter = QPainter() - painter.begin(printer) - offsetX = 0 - offsetY = 0 - widthX = 0 - heightY = 0 + painter = QPainter(printer) + font = QFont("times", 10) painter.setFont(font) fm = painter.fontMetrics() fontHeight = fm.lineSpacing() - marginX = printer.pageRect().x() - printer.paperRect().x() + marginX = ( + printer.pageLayout().paintRectPixels(printer.resolution()).x() - + printer.pageLayout().fullRectPixels(printer.resolution()).x() + ) marginX = ( Preferences.getPrinter("LeftMargin") * int(printer.resolution() / 2.54) - marginX ) - marginY = printer.pageRect().y() - printer.paperRect().y() + marginY = ( + printer.pageLayout().paintRectPixels(printer.resolution()).y() - + printer.pageLayout().fullRectPixels(printer.resolution()).y() + ) marginY = ( Preferences.getPrinter("TopMargin") * int(printer.resolution() / 2.54) - marginY @@ -377,59 +379,18 @@ int(printer.resolution() / 2.54) ) - border = self.border == 0 and 5 or self.border - rect = self._getDiagramRect(border) - diagram = self.__getDiagram(rect) + self.scene().render(painter, + target=QRectF(marginX, marginY, width, height)) - finishX = False - finishY = False - page = 0 - pageX = 0 - pageY = 1 - while not finishX or not finishY: - if not finishX: - offsetX = pageX * width - pageX += 1 - elif not finishY: - offsetY = pageY * height - offsetX = 0 - pageY += 1 - finishX = False - pageX = 1 - if (width + offsetX) > diagram.width(): - finishX = True - widthX = diagram.width() - offsetX - else: - widthX = width - if diagram.width() < width: - widthX = diagram.width() - finishX = True - offsetX = 0 - if (height + offsetY) > diagram.height(): - finishY = True - heightY = diagram.height() - offsetY - else: - heightY = height - if diagram.height() < height: - finishY = True - heightY = diagram.height() - offsetY = 0 - - painter.drawPixmap(marginX, marginY, diagram, - offsetX, offsetY, widthX, heightY) - # write a foot note - s = self.tr("{0}, Page {1}").format(diagramName, page + 1) - tc = QColor(50, 50, 50) - painter.setPen(tc) - painter.drawRect(marginX, marginY, width, height) - painter.drawLine(marginX, marginY + height + 2, - marginX + width, marginY + height + 2) - painter.setFont(font) - painter.drawText(marginX, marginY + height + 4, width, - fontHeight, Qt.AlignmentFlag.AlignRight, s) - if not finishX or not finishY: - printer.newPage() - page += 1 + # write a foot note + tc = QColor(50, 50, 50) + painter.setPen(tc) + painter.drawRect(marginX, marginY, width, height) + painter.drawLine(marginX, marginY + height + 2, + marginX + width, marginY + height + 2) + painter.setFont(font) + painter.drawText(marginX, marginY + height + 4, width, + fontHeight, Qt.AlignmentFlag.AlignRight, diagramName) painter.end()