def save_report(self, filename="", extension=".HTML"): """ Save the generated report to the specified file Currently only html """ full_filename = filename + extension.lower() full_filename = os.path.join( self._project_control.get_project_dir_absolute_path(), full_filename) if not self.report_html: self.__log.info("No report to save") return if extension == '.HTML': # HTML can contain non-ascii, so need to open with right encoding with open(full_filename, 'w', encoding='utf-8') as report_file: report_file.write(self.report_html) self.__log.info("Report written") elif extension == '.PDF': document = QTextDocument(parent=None) document.setHtml(self.report_html) printer = QPdfWriter(full_filename) printer.setPageSize(printer.A3) # A3 to fit A4 page document.print_(printer) else: raise NotImplementedError # Show the generated report in the default browser url = os.path.realpath(full_filename) open_url(url=url)
window2 = MainWindow2() window2.show() ui_file = QFile("mainwindow2.ui") ui_file.open(QFile.ReadOnly) loader = QUiLoader() window3 = loader.load(ui_file) ui_file.close() window3.show() from PySide2.QtGui import QPdfWriter, QPainter, QPagedPaintDevice, QFont from PySide2.QtCore import QMargins, QRect, Qt qpdf_writer = QPdfWriter("file.pdf") qpdf_writer.setPageSize(QPagedPaintDevice.A4) qpdf_writer.setPageMargins(QMargins(20, 20, 20, 20)) painter = QPainter(qpdf_writer) painter.setPen(Qt.black) painter.setFont(QFont("Times", 10)) rect = painter.viewport() painter.drawText(rect, Qt.AlignCenter, "QTEXAMPLE") painter.end() from PySide2.QtGui import QTextDocument from PySide2.QtPrintSupport import QPrinter from PySide2.QtWidgets import QTextEdit