WebBrowser/WebBrowserTabWidget.py

changeset 5036
318e879a37fa
parent 4979
7ac0959842f9
child 5038
df7103c3f2a6
equal deleted inserted replaced
5035:cd2a891703d3 5036:318e879a37fa
9 9
10 from __future__ import unicode_literals 10 from __future__ import unicode_literals
11 11
12 import os 12 import os
13 13
14 from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl 14 from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QFile
15 from PyQt5.QtGui import QIcon 15 from PyQt5.QtGui import QIcon
16 from PyQt5.QtWidgets import QWidget, QHBoxLayout, QMenu, QToolButton, QDialog 16 from PyQt5.QtWidgets import QWidget, QHBoxLayout, QMenu, QToolButton, QDialog
17 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog 17 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog
18 18
19 from E5Gui.E5TabWidget import E5TabWidget 19 from E5Gui.E5TabWidget import E5TabWidget
560 @param browser reference to the browser to be printed (HelpBrowser) 560 @param browser reference to the browser to be printed (HelpBrowser)
561 """ 561 """
562 if browser is None: 562 if browser is None:
563 browser = self.currentBrowser() 563 browser = self.currentBrowser()
564 564
565 printer = QPrinter(mode=QPrinter.HighResolution)
566 if Preferences.getPrinter("ColorMode"):
567 printer.setColorMode(QPrinter.Color)
568 else:
569 printer.setColorMode(QPrinter.GrayScale)
570 printerName = Preferences.getPrinter("PrinterName")
571 if printerName:
572 printer.setPrinterName(printerName)
573 printer.setOutputFormat(QPrinter.PdfFormat)
574 name = WebBrowserTools.getFileNameFromUrl(browser.url()) 565 name = WebBrowserTools.getFileNameFromUrl(browser.url())
575 if name: 566 if name:
576 name = name.rsplit('.', 1)[0] 567 name = name.rsplit('.', 1)[0]
577 name += '.pdf' 568 name += '.pdf'
578 printer.setOutputFileName(name) 569 if hasattr(browser.page(), "printToPdf"):
579 printer.setResolution(Preferences.getPrinter("Resolution")) 570 from .Tools.PrintToPdfDialog import PrintToPdfDialog
580 571 if not name:
581 printDialog = QPrintDialog(printer, self) 572 name = "printout.pdf"
582 if printDialog.exec_() == QDialog.Accepted: 573 dlg = PrintToPdfDialog(os.path.abspath(name), self)
583 browser.render(printer) 574 if dlg.exec_() == QDialog.Accepted:
575 filePath, pageLayout = dlg.getData()
576 if filePath:
577 browser.page().printToPdf(
578 lambda p: self.__pdfGenerated(filePath, p),
579 pageLayout)
580 else:
581 printer = QPrinter(mode=QPrinter.HighResolution)
582 if Preferences.getPrinter("ColorMode"):
583 printer.setColorMode(QPrinter.Color)
584 else:
585 printer.setColorMode(QPrinter.GrayScale)
586 printerName = Preferences.getPrinter("PrinterName")
587 if printerName:
588 printer.setPrinterName(printerName)
589 printer.setOutputFormat(QPrinter.PdfFormat)
590 if name:
591 printer.setOutputFileName(name)
592 printer.setResolution(Preferences.getPrinter("Resolution"))
593
594 printDialog = QPrintDialog(printer, self)
595 if printDialog.exec_() == QDialog.Accepted:
596 browser.render(printer)
597
598 def __pdfGenerated(self, filePath, pdfData):
599 """
600 Public slot handling the generated PDF data.
601
602 @param filePath path to save the PDF to
603 @type str
604 @param pdfData generated PDF document
605 @type QByteArray
606 """
607 if pdfData.size() == 0:
608 return
609
610 pdfFile = QFile(filePath)
611 if not pdfFile.open(QFile.WriteOnly):
612 return
613
614 pdfFile.write(pdfData)
615 pdfFile.close()
584 616
585 @pyqtSlot() 617 @pyqtSlot()
586 def printPreviewBrowser(self, browser=None): 618 def printPreviewBrowser(self, browser=None):
587 """ 619 """
588 Public slot called to show a print preview of the displayed file. 620 Public slot called to show a print preview of the displayed file.

eric ide

mercurial