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)
def saveOutputPDF(self): filesTypes = "Plik tekstowy (*.txt);;Plik PDF (*.pdf)" name, filter = QFileDialog.getSaveFileName(self.mainWindow, 'Zapisz plik', "Bez nazwy", filesTypes) if not name: return if filter == "Plik PDF (*.pdf)": try: linesOriginalText = self.mainWindow.ui.plainTextEditOutputPDF.toPlainText( ).split("\n") template = pd.DataFrame(linesOriginalText, dtype=str, columns=[""]) html = template.to_html(index=False, border=0) htmlFile = open("temp.html", "w", encoding="utf-8") htmlFile.write(html) htmlFile.close() doc = QTextDocument() try: html = open("temp.html", "r", encoding="utf-8") except Exception as inst: UiFunction.showErrorDialog( "Wystąpił problem z szablonem PDF \n" + str(inst)) doc.setHtml(html.read()) html.close() try: printer = QPrinter() printer.setOutputFileName(name) printer.setOutputFormat(QPrinter.PdfFormat) printer.setPageSize(QPrinter.A4) printer.setPageMargins(4, 4, 4, 4, QPrinter.Millimeter) doc.print_(printer) except Exception as inst: UiFunction.showErrorDialog( "Wystąpił problem z generowaniem pliku PDF \n" + str(inst)) os.remove('temp.html') except Exception as inst: UiFunction.showErrorDialog( "Wystąpił problem z tworzeniem pliku PDF \n" + str(inst)) elif filter == "Plik tekstowy (*.txt)": try: try: file = open(name, 'w') except Exception as inst: UiFunction.showErrorDialog( "Wystąpił problem z wybranym plikiem \n" + str(inst)) output = self.mainWindow.ui.plainTextEditOutputPDF.toPlainText( ) file.write(output) file.close() except Exception as inst: UiFunction.showErrorDialog( "Wystąpił problem z zapisem pliku \n" + str(inst))
def testWrite(self): temporaryFile = QTemporaryFile(QDir.tempPath() + "/pdfwriter_test_XXXXXX.pdf") self.assertTrue(temporaryFile.open()) pdfWriter = QPdfWriter(temporaryFile) pdfWriter.setPageLayout(QPageLayout(QPageSize(QPageSize.A4), QPageLayout.Portrait, QMarginsF(10, 10, 10, 10))) doc = QTextDocument("Some text") doc.print_(pdfWriter) temporaryFile.close() self.assertTrue(temporaryFile.size() > 0)
def print(self, printer: QPrinter) -> None: print_options = PrintOptions( print_no=self.ui.check_box_no_column.isChecked(), print_code=self.ui.check_box_code_column.isChecked(), print_description=self.ui.check_box_details_column.isChecked(), print_list_price=self.ui.check_box_list_price_column.isChecked(), print_discount=self.ui.check_box_discount_column.isChecked(), print_price=self.ui.check_box_price_column.isChecked(), print_quantity=self.ui.check_box_quantity_column.isChecked(), print_total=self.ui.check_box_total_column.isChecked() ) margin = 5 printer.setPageSize(QPrinter.A4) printer.setPageMargins(margin, margin, margin, margin, QPrinter.Millimeter) printer.setResolution(96) doc = QTextDocument() doc.setUseDesignMetrics(True) doc.setDefaultFont(self.offer_font) doc.setHtml(self.offer.printout(print_options)) doc.setPageSize(printer.pageRect().size()) doc.print_(printer)
html += "<h1 align=center> Center title </h1>" html += "<p align=justify class=\"test1\"> {} </p>".format("Loren ipsum " * 1000) html += "<div align=right> End document </div></body>" document = QTextDocument() with open("style.css", "r") as fp: document.setDefaultStyleSheet(fp.read()) document.setHtml(html) printer = QPrinter(QPrinter.PrinterResolution) printer.setOutputFormat(QPrinter.PdfFormat) printer.setPaperSize(QPrinter.A4) printer.setOutputFileName("file2.pdf") printer.setPageMargins(QMargins(10, 10, 10, 10)) document.print_(printer) from PySide2.QtPrintSupport import QPrintPreviewWidget ''' txtview = QTextEdit() txtview.setDocument(document) txtview.show() ''' printer = QPrinter(QPrinter.HighResolution) printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName("file3.pdf") customPrint(printer, document) preview = QPrintPreviewWidget(printer)
def saveOriginalAndTranslate(self): linesOriginalText = self.ui.plainTextEditOriginalText.toPlainText( ).split("\n") linesTranslateText = self.ui.plainTextEditTranslateText.toPlainText( ).split("\n") table = [linesOriginalText, linesTranslateText] filesTypes = "Plik tekstowy (*.txt);;Plik PDF (*.pdf)" name, filter = QFileDialog.getSaveFileName(self, 'Zapisz plik', "Bez nazwy", filesTypes) if not name: return if filter == "Plik PDF (*.pdf)": try: try: template = pd.DataFrame(table, dtype=str) template = template.T template.columns = ["Oryginał", "Tłumaczenie"] html = template.to_html(index=False, border=0) htmlFile = open("temp.html", "w", encoding="utf-8") htmlFile.write(html) htmlFile.close() except Exception as inst: self.showErrorDialog( "Problem podczas tworzenia szablonu PDF \n" + str(inst)) doc = QTextDocument() try: html = open("temp.html", "r", encoding="utf-8") doc.setHtml(html.read()) except Exception as inst: self.showErrorDialog("Problem z szablonem PDF \n" + str(inst)) html.close() try: printer = QPrinter() printer.setOutputFileName(name) printer.setOutputFormat(QPrinter.PdfFormat) printer.setPageSize(QPrinter.A4) printer.setPageMargins(4, 4, 4, 4, QPrinter.Millimeter) doc.print_(printer) os.remove('temp.html') except Exception as inst: self.showErrorDialog("Problem z generowanie pliku PDF \n" + str(inst)) except Exception as inst: self.showErrorDialog("Problem podczas zapisu pliku PDF \n" + str(inst)) elif filter == "Plik tekstowy (*.txt)": try: file = open(name, "w", encoding='utf-8') except Exception as inst: self.showErrorDialog("Problem z wybranym plikiem \n" + str(inst)) try: if len(linesOriginalText) >= len(linesTranslateText): longer = linesOriginalText else: longer = linesTranslateText for index in range(len(longer)): if not linesOriginalText[index]: linesOriginalText.append("") if not linesTranslateText[index]: linesTranslateText.append("") if len(linesOriginalText[index]) == 0 and len( linesTranslateText[index]) == 0: file.write("\n") else: file.write( str(linesOriginalText[index]) + " --> " + str(linesTranslateText[index]) + "\n") file.close() except Exception as inst: self.showErrorDialog( "Problem z tworzeniem pliku tekstowego \n" + str(inst))