PyQt5 Печатать текущую полную страницу на принтере - PullRequest
0 голосов
/ 29 мая 2019

Я хочу задать опцию печати в своем настраиваемом браузере, чтобы пользователь мог печатать текущую страницу на принтере.

Я использую QPrinter и QPainter для печати, но получаю только текущий размер окнанапечатано, т.е. половина страницы

import sys
from PyQt5 import QtCore, QtGui, QtWidgets, QtPrintSupport, QtWebEngineWidgets


class main(QtWebEngineWidgets.QWebEngineView):
    def __init__(self,windows,parent = None):
        super(main,self).__init__(parent)

        self._windows = windows
        self._windows.append(self)
        self.load(QtCore.QUrl('https://gmail.com'))

    #Menu items on mouse Right click for Print 
    def contextMenuEvent(self, event):       
        cmenu = QtWidgets.QMenu(self)

        printAct = cmenu.addAction("print")
        action = cmenu.exec_(self.mapToGlobal(event.pos()))
        if action == printAct:
            self.print_ww()

    def createWindow(self, windows):
        if windows == QtWebEngineWidgets.QWebEnginePage.WebBrowserTab:
            webView = main(self._windows)
            webView.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
            webView.resize(900, 780) # <----
            webView.show()
            return webView
        elif windows == QtWebEngineWidgets.QWebEnginePage.WebDialog:
            webView = main(self._windows)
            webView.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
            webView.resize(900, 780) # <----
            webView.show()
            return webView
        return super(main, self).createWindow(windows)

    def print_ww(self):
        printer = QtPrintSupport.QPrinter()
        printer.fullPage()
        painter = QtGui.QPainter()
        painter.begin(printer)
        screen = self.grab()
        painter.drawPixmap(0, 0, screen)
        painter.end()

        #Used to save page() as PDF
        # pdf_test = self.page().printToPdf("new_test.png")

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    windows = []
    web = main(windows)
    web.show()
    sys.exit(app.exec_())

Когда я щелкаю правой кнопкой мыши и нажимаю опцию печати, она печатает только половину страницы или размер окна.Я хочу напечатать всю страницу на бумаге формата A4, размер должен уменьшиться, если ширина будет больше.

...