Я хочу задать опцию печати в своем настраиваемом браузере, чтобы пользователь мог печатать текущую страницу на принтере.
Я использую 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, размер должен уменьшиться, если ширина будет больше.