예제 #1
0
    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)
예제 #2
0
    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))
예제 #3
0
 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)
예제 #4
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)
예제 #5
0
    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))