def _print(self): dialog = QPrintDialog(self) if dialog.exec_() != QPrintDialog.Accepted: return printer = dialog.printer() currentView = self.mainView.currentWidget() viewPrinter = ViewPrinter(printer, currentView) currentView.fitViewsForPrint(viewPrinter) viewPrinter.render()
def print(self): name = (self.dateEdit.text()) date = QDate.currentDate().toString() pilot = self.lineEditPilote.text() html = (""" < html > < body > Hello world! <p>name is {}</p> <p> and the date is {} <p> pilot is {} </body> < / html > """).format(name, date, pilot) # create a QPrinter object for the printer the user later selects myPrinter = QPrinter() # let user select and configure a printer, saved in the object created above myDialog = QPrintDialog(myPrinter, self) # execute the print if the user clicked "Print" if myDialog.exec_(): # create a QTextDocument in memory to hold our HTML myDocument = QTextDocument() # load the html into the document myDocument.setHtml(html) # send the html to the physical printer myDocument.print_(myPrinter)
def print_buffer(ctx): """ Opens a dialog to select the printer and prints the current buffer. """ from ..application import WithoutAppEventFilter if version.min_qt_version < (5, 8): ctx.minibuffer.show_info( "print-buffer not supported, qt version >= 5.8 required") return def notif(ok): GLOBAL_OBJECTS.unref(printer) ctx.minibuffer.show_info( "print successful" if ok else "failed to print") printer = QPrinter() dlg = QPrintDialog(printer) with WithoutAppEventFilter(): ok = dlg.exec_() == dlg.Accepted if ok: # printer must be kept around to avoid a crash. # it must be released in the notif callback GLOBAL_OBJECTS.ref(printer) ctx.minibuffer.show_info("printing...") ctx.buffer.print(printer, notif)
def impression(self): # Creation du printer printer = QPrinter() dialog = QPrintDialog(printer, self) if dialog.exec_() != QDialog.Accepted: return printer.setPageMargins(10, 10, 10, 10, QPrinter.Point) # Calcul le ratio de redimensionnement page_width = printer.pageRect().width() page_height = printer.pageRect().height() widget_width = self.rapport.width() widget_height = self.rapport.height() ratio = min(page_width / widget_width, page_height / widget_height) # Calcul du positionnement pos_x = max(0, (page_width - ratio * widget_width) / 2) pos_y = max(0, (page_height - ratio * widget_height) / 2) # Render le widget dans une image QPicture pour stocker # les directives de dessin picture = QPicture() widget_painter = QPainter(picture) widget_painter.scale(ratio, ratio) self.rapport.render(widget_painter) widget_painter.end() # Render la QPicture en utilisant le QPrinter picture_painter = QPainter() picture_painter.begin(printer) picture_painter.drawPicture(QPointF(pos_x, pos_y), picture) picture_painter.end()
def print_(self): ui = self._ui printer = self._printer printer.setDocName(ui.webView.title() or '') dialog = QPrintDialog(printer, self) if dialog.exec_() == QDialog.Accepted: ui.webView.print_(printer)
def printHandler(self): # Open printing dialog dialog = QPrintDialog() if dialog.exec_() == QDialog.Accepted: self.noteContentEdit.document().print_(dialog.printer())
def noview_pt(self): printer = QPrinter(QPrinter.HighResolution) printer.setFontEmbeddingEnabled(True) dialog = QPrintDialog(printer, self) if not dialog.exec_(): return self.paintpic(printer)
def printDiagram(self): """ Public slot called to print the diagram. """ printer = QPrinter(mode=QPrinter.ScreenResolution) printer.setFullPage(True) if Preferences.getPrinter("ColorMode"): printer.setColorMode(QPrinter.Color) else: printer.setColorMode(QPrinter.GrayScale) if Preferences.getPrinter("FirstPageFirst"): printer.setPageOrder(QPrinter.FirstPageFirst) else: printer.setPageOrder(QPrinter.LastPageFirst) printer.setPageMargins( Preferences.getPrinter("LeftMargin") * 10, Preferences.getPrinter("TopMargin") * 10, Preferences.getPrinter("RightMargin") * 10, Preferences.getPrinter("BottomMargin") * 10, QPrinter.Millimeter ) printerName = Preferences.getPrinter("PrinterName") if printerName: printer.setPrinterName(printerName) printDialog = QPrintDialog(printer, self) if printDialog.exec_(): super(UMLGraphicsView, self).printDiagram( printer, self.diagramName)
def printViaHtml(self): htmltext = "" date = QDate.currentDate().toString(DATE_FORMAT) # 获取当前时间 patient = GetpatientInfo("李尼古", "男", "56岁", "内科", "113", "2", "955464", "111745") htmltext += ( "<p align=center><font size='16'>华中科技大学同济医学院附属协和医院</font></p>" "<p align=center><font size='18'><b>CT检查报告书</b></font></p>") htmltext += ( "<p align=right><font size='4'>CT号:<u>{0}</u></font></p>").format( patient.CT_no) htmltext += ("<hr style='color:black'/>") htmltext += ( "<p align=center><font size='4'>姓名:<u>{0}</u> 性别:<u>{1}</u> " "年龄:<u>{2}</u> 科别:<u>{3}</u> 病房:<u>{4}</u> 床号:<u>{5}</u>" " 住院号:<u>{6}</u></font></p>").format( patient.name, patient.gender, patient.age, patient.ill_type, patient.ward, patient.bed_no, patient.hospital_no) htmltext += ("<p align=justify><font size='5'> 左肺瘤第三次化疗" "术后:左肺舌叶可见不规则型团块状软组织密度影,截面约为3.0×4.4cm,CT值约为28-45HU,左侧舌" "叶支气管截断,邻近胸膜可见牵引征,肿块远端见小片状高密度影,左肺下叶外基底段胸膜下可见直" "径约0.7cm小结节影,边界光整。纵隔内可见明显肿大淋巴结,最大者位于主肺动脉窗内,约为4.1×" "3.5cm。扫描所及肝左叶可见点状低密度影,肝脏密度减低。</font></p>") htmltext += ("<p align=right><font size='4'>医师签名:</font></p>") htmltext += ( "<p align=right><font size='4'>报告日期:{0}</font></p>").format(date) htmltext += ( "<hr style='color:black'/><p align=left><font size='4'><b>(本报告仅供临床医生诊断参考)</b></font></p>" ) dialog = QPrintDialog(self.printer, self) if dialog.exec_(): document = QTextDocument() document.setHtml(htmltext) document.print_(self.printer)
def __printPdfRequested(self, frame): """ Private slot to handle a print to PDF request. @param frame reference to the frame to be printed (QWebFrame) """ printer = QPrinter(mode=QPrinter.HighResolution) if Preferences.getPrinter("ColorMode"): printer.setColorMode(QPrinter.Color) else: printer.setColorMode(QPrinter.GrayScale) printerName = Preferences.getPrinter("PrinterName") if printerName: printer.setPrinterName(printerName) printer.setOutputFormat(QPrinter.PdfFormat) name = frame.url().path().rsplit('/', 1)[-1] if name: name = name.rsplit('.', 1)[0] name += '.pdf' printer.setOutputFileName(name) printDialog = QPrintDialog(printer, self) if printDialog.exec_() == QDialog.Accepted: try: frame.print_(printer) except AttributeError: E5MessageBox.critical( self, self.tr("eric6 Web Browser"), self.tr( """<p>Printing is not available due to a bug in""" """ PyQt5. Please upgrade.</p>""")) return
def __printRequested(self, frame): """ Private slot to handle a print request. @param frame reference to the frame to be printed (QWebFrame) """ printer = QPrinter(mode=QPrinter.HighResolution) if Preferences.getPrinter("ColorMode"): printer.setColorMode(QPrinter.Color) else: printer.setColorMode(QPrinter.GrayScale) if Preferences.getPrinter("FirstPageFirst"): printer.setPageOrder(QPrinter.FirstPageFirst) else: printer.setPageOrder(QPrinter.LastPageFirst) printer.setPageMargins( Preferences.getPrinter("LeftMargin") * 10, Preferences.getPrinter("TopMargin") * 10, Preferences.getPrinter("RightMargin") * 10, Preferences.getPrinter("BottomMargin") * 10, QPrinter.Millimeter) printerName = Preferences.getPrinter("PrinterName") if printerName: printer.setPrinterName(printerName) printDialog = QPrintDialog(printer, self) if printDialog.exec_() == QDialog.Accepted: try: frame.print_(printer) except AttributeError: E5MessageBox.critical( self, self.tr("Pymakr Web Browser"), self.tr("""<p>Printing is not available due to a bug in""" """ PyQt5. Please upgrade.</p>""")) return
def __printPdfRequested(self, frame): """ Private slot to handle a print to PDF request. @param frame reference to the frame to be printed (QWebFrame) """ printer = QPrinter(mode=QPrinter.HighResolution) if Preferences.getPrinter("ColorMode"): printer.setColorMode(QPrinter.Color) else: printer.setColorMode(QPrinter.GrayScale) printerName = Preferences.getPrinter("PrinterName") if printerName: printer.setPrinterName(printerName) printer.setOutputFormat(QPrinter.PdfFormat) name = frame.url().path().rsplit('/', 1)[-1] if name: name = name.rsplit('.', 1)[0] name += '.pdf' printer.setOutputFileName(name) printDialog = QPrintDialog(printer, self) if printDialog.exec_() == QDialog.Accepted: try: frame.print_(printer) except AttributeError: E5MessageBox.critical( self, self.tr("Pymakr Web Browser"), self.tr("""<p>Printing is not available due to a bug in""" """ PyQt5. Please upgrade.</p>""")) return
def printDialog(self): printer = QPrinter(QPrinter.HighResolution) printer.setFullPage(True) printer.setPageMargins(0, 0, 0, 0, QPrinter.Millimeter) dialog = QPrintDialog(printer, self) if dialog.exec_() == QPrintDialog.Accepted: self.textEdit.print_(printer)
def print_record(self,htmltxt): dialog = QPrintDialog(self.printer, self) if dialog.exec_(): document = QTextDocument() document.setHtml(htmltxt) document.print_(self.printer) self.close()
def _printLabel(self): # self.label.setText(self.__args[5]) if self.label.setObjectName=='Item_Name'else self.label.setText('') dialog = QPrintDialog(self.__printer, self) #choose printer if not dialog.exec_(): return for o in self.__oL: #set value to label # print(o.objectName()) if o.objectName() == 'ItemCode': o.setText(self.__args[1]) if o.objectName() == 'Barcode': o.setBarcode(self.__args[2]) if o.objectName() == 'ItemBarcode': o.setText(self.__args[2]) if o.objectName() == 'PLU': o.setText(self.__args[3]) if o.objectName() == 'ItemName': o.setText(self.__args[4]) # for s in self.__args: # print(s) painter = QPainter(self.__printer) image = QPixmap() image = self.grab( QRect(QPoint(0, 0), QSize(self.size().width(), self.size().height()))) # /* 绘制窗口至画布 */ rect = painter.viewport() size = image.size() size.scale(rect.size(), Qt.KeepAspectRatio) painter.setViewport(rect.x(), rect.y(), size.width(), size.height()) painter.setWindow(image.rect()) painter.drawPixmap(0, 0, image)
def printReciept(self, htmltext): dialog = QPrintDialog(self.printer, self) if dialog.exec_(): document = QTextDocument() # print(self.printer.logicalDpiX()) # print(self.printer.logicalDpiX() * (210 / 25.4)) # print(self.printer.logicalDpiY()) # print(self.printer.logicalDpiY() * (297 / 25.4)) #A4 # document.setPageSize(QSizeF(self.printer.logicalDpiX() * (210 / 25.4),self.printer.logicalDpiY() * (297 / 25.4))); #小票 qsizeF = QSizeF(self.printer.logicalDpiX() * (257 / 25.4), self.printer.logicalDpiY() * (125 / 25.4)) # qsizeF = QSizeF(self.printer.logicalDpiX() * (215.90 / 25.4), self.printer.logicalDpiY() * (127.00 / 25.4)); # qsizeF = QSizeF(self.printer.logicalDpiY() * (125 / 25.4),self.printer.logicalDpiX() * (257 / 25.4)); self.printer.setPageSize(QPrinter.Custom) self.printer.setPaperName("小票2") paperSize = QSizeF(257, 125) self.printer.setPaperSize(paperSize, QPrinter.Millimeter) # self.printer.setPageSizeMM(qsizeF) document.setPageSize(qsizeF) # font = QFont(); # font.setPointSize(6) # document.setDefaultFont(font); document.setHtml(htmltext) document.print_(self.printer)
def slotPrint(self): # 新建一个QPrinter对象 printer=QPrinter() # 创建一个QPrintDialog对象,参数为QPrinter对象 printDialog=QPrintDialog(printer,self) ''' 判断打印对话框显示后用户是否单击“打印”按钮,若单击“打印”按钮, 则相关打印属性可以通过创建QPrintDialog对象时使用的QPrinter对象获得, 若用户单击“取消”按钮,则不执行后续的打印操作。 ''' if printDialog.exec_(): # 创建一个QPainter对象,并指定绘图设备为一个QPrinter对象。 painter=QPainter(printer) # 获得QPainter对象的视口矩形 rect=painter.viewport() # 获得图像的大小 size=self.image.size() # 按照图形的比例大小重新设置视口矩形 size.scale(rect.size(),Qt.KeepAspectRatio) painter.setViewport(rect.x(),rect.y(),size.width(),size.height()) # 设置QPainter窗口大小为图像的大小 painter.setWindow(self.image.rect()) # 打印 painter.drawImage(0,0,self.image)
def printDiagram(self): """ Public slot called to print the diagram. """ printer = QPrinter(mode=QPrinter.ScreenResolution) printer.setFullPage(True) if Preferences.getPrinter("ColorMode"): printer.setColorMode(QPrinter.Color) else: printer.setColorMode(QPrinter.GrayScale) if Preferences.getPrinter("FirstPageFirst"): printer.setPageOrder(QPrinter.FirstPageFirst) else: printer.setPageOrder(QPrinter.LastPageFirst) printer.setPageMargins( Preferences.getPrinter("LeftMargin") * 10, Preferences.getPrinter("TopMargin") * 10, Preferences.getPrinter("RightMargin") * 10, Preferences.getPrinter("BottomMargin") * 10, QPrinter.Millimeter) printerName = Preferences.getPrinter("PrinterName") if printerName: printer.setPrinterName(printerName) printDialog = QPrintDialog(printer, self) if printDialog.exec_(): super(UMLGraphicsView, self).printDiagram(printer, self.diagramName)
def slotPrint(self): # 新建一個QPrinter物件 printer = QPrinter() # 建立一個QPrintDialog物件,參數為QPrinter物件 printDialog = QPrintDialog(printer, self) ''' 判斷列印對話方塊顯示後是否點擊「列印」鈕,如果是, 則相關列印屬性可以透過建立QPrintDialog物件時以QPrinter物件取得, 若點擊「取消」鈕,則不執行後續的列印操作。 ''' if printDialog.exec_(): # 建立一個QPainter物件,並指定繪圖設備為一個QPrinter物件。 painter = QPainter(printer) # 取得QPainter物件的視窗矩形 rect = painter.viewport() # 取得圖形的大小 size = self.image.size() # 依照圖形的比例大小重新設定視窗矩形 size.scale(rect.size(), Qt.KeepAspectRatio) painter.setViewport(rect.x(), rect.y(), size.width(), size.height()) # 設定QPainter視窗大小為圖形的大小 painter.setWindow(self.image.rect()) # 列印 painter.drawImage(0, 0, self.image)
def printImage(self): """ Print image. """ # create printer object and print output defined by the platform # the program is being run on. # QPrinter.NativeFormat is the default printer = QPrinter() printer.setOutputFormat(QPrinter.NativeFormat) # Create printer dialog to configure printer print_dialog = QPrintDialog(printer) # if the dialog is accepted by the user, begin printing if (print_dialog.exec_() == QPrintDialog.Accepted): # use QPainter to output a PDF file painter = QPainter() # begin painting device painter.begin(printer) # Set QRect to hold painter's current viewport, which # is the image_label rect = QRect(painter.viewport()) # get the size of image_label and use it to set the size # of the viewport size = QSize(self.image_label.pixmap().size()) size.scale(rect.size(), Qt.KeepAspectRatio) painter.setViewport(rect.x(), rect.y(), size.width(), size.height()) painter.setWindow(self.image_label.pixmap().rect()) # scale the image_label to fit the rect source (0, 0) painter.drawPixmap(0, 0, self.image_label.pixmap()) # end painting painter.end()
def printDocument(self, document): """ this will print the document to the selected printer :param document: reference to the document :return: return true on print, false otherwise """ # create the qprinter object printer = QPrinter(QPrinter.HighResolution) printer.setPageSize(QPrinter.A4) printer.setColorMode(QPrinter.Color) printer.setOutputFormat(QPrinter.NativeFormat) # create and run the print dialog print_dialog = QPrintDialog(printer) state = print_dialog.exec_() print(state) print(QDialog.Accepted) if state == QDialog.Accepted: # print if the user selected print logging.debug("User chose to print") document.print_(printer) return True # if the user selected not to print logging.warning("User chose NOT to print") return False
def print_file(self): printer = QPrinter(QPrinter.HighResolution) dialog = QPrintDialog(printer, self) if dialog.exec_() == QPrintDialog.Accepted: self.centralWidget().textEdit.print_(printer) pass
def printFile(self): print("printFile") printer = QPrinter() printDialog = QPrintDialog(printer, self) if QDialog.Accepted == printDialog.exec_(): # 打印机选择完成后、调用QTextEdit的打印方法进行打印 self.Text_dataFrame.print(printer)
def createPrintDialog(self): mylist = [] printer = QPrinter(QPrinter.HighResolution) dialog = QPrintDialog(printer, self) if dialog.exec_() == QPrintDialog.Accepted: self.dashboard.label_welcome_username.print_(printer)
def printInvoice(self): printer = QPrinter(QPrinter.HighResolution) dialog = QPrintDialog(printer, self) if dialog.exec_() == QPrintDialog.Accepted: self.ui.invoiceField.print_(printer) self.invoice_printed.emit() self.close()
def filePrint(self): """Show dialog and print tree output based on current options. """ self.printer.setOutputFormat(QPrinter.NativeFormat) self.setupData() printDialog = QPrintDialog(self.printer, QApplication.activeWindow()) if printDialog.exec_() == QDialog.Accepted: self.paintData(self.printer)
def printing(self): document = self.textEdit.document() printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec_() != QDialog.Accepted: return document.print_(printer) self.statusBar().showMessage("Ready", 2000)
def print_webpage(self): """Print the webpage to a printer. Callback for the print action. Should show a print dialog and print the webpage to the printer. """ if self.print_settings.get("mode") == "high": printer = QPrinter(mode=QPrinter.HighResolution) else: printer = QPrinter(mode=QPrinter.ScreenResolution) if self.print_settings: if self.print_settings.get("size_unit"): try: unit = getattr( QPrinter, self.print_settings.get("size_unit").capitalize() ) except NameError: debug( "Specified print size unit '{}' not found," "using default.".format( self.print_settings.get("size_unit") )) unit = QPrinter.Millimeter else: unit = QPrinter.Millimeter margins = ( list(self.print_settings.get("margins")) or list(printer.getPageMargins(unit)) ) margins += [unit] printer.setPageMargins(*margins) if self.print_settings.get("orientation") == "landscape": printer.setOrientation(QPrinter.Landscape) else: printer.setOrientation(QPrinter.Portrait) if self.print_settings.get("paper_size"): printer.setPaperSize(QSizeF( *self.print_settings.get("paper_size") ), unit) if self.print_settings.get("resolution"): printer.setResolution( int(self.print_settings.get("resolution")) ) if not self.print_settings.get("silent"): print_dialog = QPrintDialog(printer, self) print_dialog.setWindowTitle("Print Page") if not print_dialog.exec_() == QDialog.Accepted: return False self.print_(printer) return True
def printdialog(self): ''' 打印机配置的对话框 ''' printdialog = QPrintDialog(self.printer, self) #QPrintDialog类提供了一个用于指定打印机配置的对话框 if QDialog.Accepted == printdialog.exec_(): self.tx.print( self.printer) #选择好打印机后,点击打印,调用QTextEdit中的print方法进行相关的打印。
def print_scheme(self): self.printer = QPrinter() printDialog = QPrintDialog(self.printer) if (printDialog.exec_() == QDialog.Accepted): painter = QPainter(self.printer) painter.setRenderHint(QPainter.Antialiasing) painter.setRenderHint(QPainter.TextAntialiasing) self.scene.clearSelection() self.scene.render(painter)
def _q_print(self): printDialog = QPrintDialog(self.printer, self) if printDialog.exec_() == QDialog.Accepted: if not importedQtWebEngine: self.preview.print_() else: self.webView.page().print(self.printer, self._dummy) self.accept()
def print_(self): dialog = QPrintDialog(self.printer) if dialog.exec_(): painter = QPainter(self.printer) painter.setRenderHint(QPainter.Antialiasing) painter.setRenderHint(QPainter.TextAntialiasing) self.scene.clearSelection() self.removeBorders() self.scene.render(painter) self.addBorders()
def print_(self): dialog = QPrintDialog(self.printer, self) if dialog.exec_(): painter = QPainter(self.printer) rect = painter.viewport() size = self.imageLabel.pixmap().size() size.scale(rect.size(), Qt.KeepAspectRatio) painter.setViewport(rect.x(), rect.y(), size.width(), size.height()) painter.setWindow(self.imageLabel.pixmap().rect()) painter.drawPixmap(0, 0, self.imageLabel.pixmap())
def printText(self): document = self.text.document() printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec_() != QtWidgets.QDialog.Accepted: return document.print_(printer) self.statusBar().showMessage("打印成功", 2000)
def print_(self): document = self.textEdit.document() printer = QPrinter() dlg = QPrintDialog(printer, self) if dlg.exec_() != QDialog.Accepted: return document.print_(printer) self.statusBar().showMessage("Ready", 2000)
def print_(self): printer = QPrinter() dlg = QPrintDialog(printer, self) dlg.setWindowTitle(app.caption(_("Print"))) options = (QAbstractPrintDialog.PrintToFile | QAbstractPrintDialog.PrintShowPageSize | QAbstractPrintDialog.PrintPageRange) if self.browser.textCursor().hasSelection(): options |= QAbstractPrintDialog.PrintSelection dlg.setOptions(options) if dlg.exec_(): self.browser.print_(printer)
def slot_canvasPrint(self): self.scene.clearSelection() self.fExportPrinter = QPrinter() dialog = QPrintDialog(self.fExportPrinter, self) if dialog.exec_(): painter = QPainter(self.fExportPrinter) painter.save() painter.setRenderHint(QPainter.Antialiasing) painter.setRenderHint(QPainter.TextAntialiasing) self.scene.render(painter) painter.restore()
def print_img(self): dialog = QPrintDialog(self.printer, self) if dialog.exec_(): painter = QPainter(self.printer) rect = painter.viewport() if self.pixmap.width() > self.pixmap.height(): self.pixmap = self.pixmap.transformed(QTransform().rotate(90)) size = self.pixmap.size() size.scale(rect.size(), Qt.KeepAspectRatio) painter.setViewport(rect.x(), rect.y(), size.width(), size.height()) painter.setWindow(self.pixmap.rect()) painter.drawPixmap(0, 0, self.pixmap)
def print(self): print("controller.print") editor = self.ui.webView printer = QPrinter() #print(printer, self) dialog = QPrintDialog(printer, self) dialog.setWindowTitle("Print Document") if dialog.exec_() != QDialog.Accepted: return editor.print_(printer)
def filePrint(self): printer = QPrinter(QPrinter.HighResolution) dlg = QPrintDialog(printer, self) if self.textEdit.textCursor().hasSelection(): dlg.addEnabledOption(QPrintDialog.PrintSelection) dlg.setWindowTitle("Print Document") if dlg.exec_() == QPrintDialog.Accepted: self.textEdit.print_(printer) del dlg
def print_(self): printer = QPrinter(QPrinter.HighResolution) printDialog = QPrintDialog(printer, self) if printDialog.exec_() == QPrintDialog.Accepted: painter = QPainter(printer) rect = painter.viewport() size = self.image.size() size.scale(rect.size(), Qt.KeepAspectRatio) painter.setViewport(rect.x(), rect.y(), size.width(), size.height()) painter.setWindow(self.image.rect()) painter.drawImage(0, 0, self.image) painter.end()
def print_file(self): dialog = QPrintDialog(self.printer, self) if dialog.exec_(): painter = QPainter(self.printer) rect = painter.viewport() # auto landscape or portrait printing depending on picture if self.qpixmap_pixel.width() > self.qpixmap_pixel.height(): self.qpixmap_pixel = self.qpixmap_pixel.transformed(QTransform().rotate(90)) size = self.qpixmap_pixel.size() size.scale(rect.size(), Qt.KeepAspectRatio) painter.setViewport(rect.x(), rect.y(), size.width(), size.height()) painter.setWindow(self.qpixmap_pixel.rect()) painter.drawPixmap(0, 0, self.qpixmap_pixel)
def printFile(self): editor = self.solvers.currentWidget() if type(editor) == QTextEdit: printer = QPrinter() dialog = QPrintDialog(printer, self) dialog.setWindowTitle("Print Document") if dialog.exec_() != QDialog.Accepted: return editor.print_(printer) else: answer = QMessageBox.warning(self, "Not Print Image", "Dont print graph.", QMessageBox.Ok)
def printFile(self): editor = self.letters.currentWidget() printer = QPrinter() dialog = QPrintDialog(printer, self) dialog.setWindowTitle("Print Document") if editor.textCursor().hasSelection(): dialog.addEnabledOption(QAbstractPrintDialog.PrintSelection) if dialog.exec_() != QDialog.Accepted: return editor.print_(printer)
def __printDiagram(self): """ Private slot called to print the diagram. """ printer = QPrinter(mode=QPrinter.ScreenResolution) printer.setFullPage(True) if Preferences.getPrinter("ColorMode"): printer.setColorMode(QPrinter.Color) else: printer.setColorMode(QPrinter.GrayScale) if Preferences.getPrinter("FirstPageFirst"): printer.setPageOrder(QPrinter.FirstPageFirst) else: printer.setPageOrder(QPrinter.LastPageFirst) printer.setPrinterName(Preferences.getPrinter("PrinterName")) printDialog = QPrintDialog(printer, self) if printDialog.exec_(): self.__print(printer)
def __printImage(self): """ Private slot to handle the Print Image menu action. """ if self.mainWidget is None: E5MessageBox.critical( self, self.tr("Print Image"), self.tr("""There is no UI file loaded.""")) return settings = Preferences.Prefs.settings printer = QPrinter(QPrinter.HighResolution) printer.setFullPage(True) printerName = Preferences.getPrinter("UIPreviewer/printername") if printerName: printer.setPrinterName(printerName) printer.setPageSize( QPrinter.PageSize(int(settings.value("UIPreviewer/pagesize")))) printer.setPageOrder( QPrinter.PageOrder(int(settings.value("UIPreviewer/pageorder")))) printer.setOrientation(QPrinter.Orientation( int(settings.value("UIPreviewer/orientation")))) printer.setColorMode( QPrinter.ColorMode(int(settings.value("UIPreviewer/colormode")))) printDialog = QPrintDialog(printer, self) if printDialog.exec_() == QDialog.Accepted: self.statusBar().showMessage(self.tr("Printing the image...")) self.__print(printer) settings.setValue("UIPreviewer/printername", printer.printerName()) settings.setValue("UIPreviewer/pagesize", printer.pageSize()) settings.setValue("UIPreviewer/pageorder", printer.pageOrder()) settings.setValue("UIPreviewer/orientation", printer.orientation()) settings.setValue("UIPreviewer/colormode", printer.colorMode()) self.statusBar().showMessage( self.tr("Image sent to printer..."), 2000)
def show_dialog(self) -> None: """Print with a QPrintDialog.""" self.check_printer_support() def print_callback(ok: bool) -> None: """Called when printing finished.""" if not ok: message.error("Printing failed!") diag.deleteLater() def do_print() -> None: """Called when the dialog was closed.""" self.to_printer(diag.printer(), print_callback) diag = QPrintDialog(self._tab) if utils.is_mac: # For some reason we get a segfault when using open() on macOS ret = diag.exec_() if ret == QDialog.Accepted: do_print() else: diag.open(do_print)
def __printRequested(self, frame): """ Private slot to handle a print request. @param frame reference to the frame to be printed (QWebFrame) """ printer = QPrinter(mode=QPrinter.HighResolution) if Preferences.getPrinter("ColorMode"): printer.setColorMode(QPrinter.Color) else: printer.setColorMode(QPrinter.GrayScale) if Preferences.getPrinter("FirstPageFirst"): printer.setPageOrder(QPrinter.FirstPageFirst) else: printer.setPageOrder(QPrinter.LastPageFirst) printer.setPageMargins( Preferences.getPrinter("LeftMargin") * 10, Preferences.getPrinter("TopMargin") * 10, Preferences.getPrinter("RightMargin") * 10, Preferences.getPrinter("BottomMargin") * 10, QPrinter.Millimeter ) printerName = Preferences.getPrinter("PrinterName") if printerName: printer.setPrinterName(printerName) printDialog = QPrintDialog(printer, self) if printDialog.exec_() == QDialog.Accepted: try: frame.print_(printer) except AttributeError: E5MessageBox.critical( self, self.tr("eric6 Web Browser"), self.tr( """<p>Printing is not available due to a bug in""" """ PyQt5. Please upgrade.</p>""")) return
def printSource(self): cursor = self.textCursor() try: printer = self._sourcePrinter except AttributeError: printer = self._sourcePrinter = QPrinter() else: printer.setCopyCount(1) dlg = QPrintDialog(printer, self) dlg.setWindowTitle(app.caption(_("dialog title", "Print Source"))) options = QAbstractPrintDialog.PrintToFile | QAbstractPrintDialog.PrintShowPageSize if cursor.hasSelection(): options |= QAbstractPrintDialog.PrintSelection dlg.setOptions(options) if dlg.exec_(): if dlg.printRange() != QAbstractPrintDialog.Selection: cursor.clearSelection() number_lines = QSettings().value("source_export/number_lines", False, bool) doc = highlighter.html_copy(cursor, 'printer', number_lines) doc.setMetaInformation(QTextDocument.DocumentTitle, self.currentDocument().url().toString()) font = doc.defaultFont() font.setPointSizeF(font.pointSizeF() * 0.8) doc.setDefaultFont(font) doc.print_(printer)
def printImage(self): if self.model.rowCount(QModelIndex()) * self.model.columnCount(QModelIndex()) > 90000: answer = QMessageBox.question(self, "Large Image Size", "The printed image may be very large. Are you sure that " "you want to print it?", QMessageBox.Yes | QMessageBox.No) if answer == QMessageBox.No: return printer = QPrinter(QPrinter.HighResolution) dlg = QPrintDialog(printer, self) dlg.setWindowTitle("Print Image") if dlg.exec_() != QDialog.Accepted: return painter = QPainter() painter.begin(printer) rows = self.model.rowCount(QModelIndex()) columns = self.model.columnCount(QModelIndex()) sourceWidth = (columns+1) * ItemSize sourceHeight = (rows+1) * ItemSize painter.save() xscale = printer.pageRect().width() / float(sourceWidth) yscale = printer.pageRect().height() / float(sourceHeight) scale = min(xscale, yscale) painter.translate(printer.paperRect().x()+printer.pageRect().width()/2, printer.paperRect().y()+printer.pageRect().height()/2) painter.scale(scale, scale) painter.translate(-sourceWidth/2, -sourceHeight/2) option = QStyleOptionViewItem() parent = QModelIndex() progress = QProgressDialog("Printing...", "Cancel", 0, rows, self) progress.setWindowModality(Qt.ApplicationModal) y = ItemSize / 2.0 for row in range(rows): progress.setValue(row) QApplication.processEvents() if progress.wasCanceled(): break x = ItemSize / 2.0 for column in range(columns): option.rect = QRect(x, y, ItemSize, ItemSize) self.view.itemDelegate().paint(painter, option, self.model.index(row, column, parent)) x += ItemSize y += ItemSize progress.setValue(rows) painter.restore() painter.end() if progress.wasCanceled(): QMessageBox.information(self, "Printing canceled", "The printing process was canceled.", QMessageBox.Cancel)
def _q_print(self): printDialog = QPrintDialog(self.printer, self) if printDialog.exec_() == QDialog.Accepted: self.preview.print_() self.accept()
def print_(doc, filename=None, widget=None): """Prints the popplerqt5.Poppler.Document. The filename is used in the dialog and print job name. If the filename is not given, it defaults to a translation of "PDF Document". The widget is a widget to use as parent for the print dialog etc. """ # Decide how we will print. # on Windows and Mac OS X a print command must be specified, otherwise # we'll use raster printing s = QSettings() s.beginGroup("helper_applications") cmd = s.value("printcommand", "", str) use_dialog = s.value("printcommand/dialog", False, bool) resolution = s.value("printcommand/dpi", 300, int) linux_lpr = False if os.name != 'nt' and not sys.platform.startswith('darwin'): # we're probably on Linux if not cmd: cmd = fileprinter.lprCommand() if cmd: linux_lpr = True elif cmd.split('/')[-1] in fileprinter.lpr_commands: linux_lpr = True print_file = filename title = os.path.basename(filename) if filename else _("PDF Document") if widget: try: printer = _printers[widget] except KeyError: printer = _printers[widget] = QPrinter() else: printer.setCopyCount(1) else: printer = QPrinter() printer.setDocName(title) printer.setPrintRange(QPrinter.AllPages) if linux_lpr or use_dialog or not cmd: dlg = QPrintDialog(printer, widget) dlg.setMinMax(1, doc.numPages()) dlg.setOption(QPrintDialog.PrintToFile, False) dlg.setWindowTitle(app.caption(_("Print {filename}").format(filename=title))) result = dlg.exec_() if widget: dlg.deleteLater() # because it has a parent if not result: return # cancelled if linux_lpr or '$ps' in cmd: # make a PostScript file with the desired paper size ps = QTemporaryFile() if ps.open() and qpopplerview.printer.psfile(doc, printer, ps): ps.close() print_file = ps.fileName() elif cmd: if printer.printRange() != QPrinter.AllPages: cmd = None # we can't cut out pages from a PDF file elif '$pdf' not in cmd: cmd += ' $pdf' command = [] if linux_lpr: # let all converted pages print printer.setPrintRange(QPrinter.AllPages) command = fileprinter.printCommand(cmd, printer, ps.fileName()) elif cmd and print_file: for arg in helpers.shell_split(cmd): if arg in ('$ps', '$pdf'): command.append(print_file) else: arg = arg.replace('$printer', printer.printerName()) command.append(arg) if command: if subprocess.call(command): QMessageBox.warning(widget, _("Printing Error"), _("Could not send the document to the printer.")) return else: # Fall back printing of rendered raster images. # It is unsure if the Poppler ArthurBackend ever will be ready for # good rendering directly to a painter, so we'll fall back to using # raster images. p = Printer() p.setDocument(doc) p.setPrinter(printer) p.setResolution(resolution) d = QProgressDialog() d.setModal(True) d.setMinimumDuration(0) d.setRange(0, len(p.pageList()) + 1) d.canceled.connect(p.abort) def progress(num, total, page): d.setValue(num) d.setLabelText(_("Printing page {page} ({num} of {total})...").format( page=page, num=num, total=total)) def finished(): p.deleteLater() d.deleteLater() d.hide() if not p.success and not p.aborted(): QMessageBox.warning(widget, _("Printing Error"), _("Could not send the document to the printer.")) p.finished.connect(finished) p.printing.connect(progress) p.start()
def onPrint(self): # printer = QPrinter() dlg = QPrintDialog(printer, parent=self) if dlg.exec_() == dlg.Accepted: self.hbrowser.print_(dlg.printer())
def print_webpage(self): """Print the webpage to a printer. Callback for the print action. Should show a print dialog and print the webpage to the printer. """ print_settings = self.config.get("print_settings", {}) if print_settings.get("mode") == "high": printer = QPrinter(mode=QPrinter.HighResolution) else: printer = QPrinter(mode=QPrinter.ScreenResolution) # set which printer # FIXME: This isn't documented, because it doesn't seem to work... if print_settings.get("printer_name"): debug( "Setting printer to: {}".format( print_settings.get("printer_name")) ) printer.setPrinterName(print_settings.get("printer_name")) debug("Printer is now: {}".format(printer.printerName())) # Set the units unit_name = print_settings.get("size_unit", 'Millimeter').title() try: unit = getattr(QPrinter, unit_name) except AttributeError: debug( "Specified print size unit '{}' not found, using default." .format(unit_name) ) unit = QPrinter.Millimeter # Set the margins margins = list( print_settings.get("margins", printer.getPageMargins(unit)) ) margins.append(unit) printer.setPageMargins(*margins) # Set the Orientation orientation = print_settings.get("orientation", 'Portrait').title() printer.setOrientation( getattr(QPrinter, orientation, QPrinter.Portrait) ) # Set the paper size paper_size = print_settings.get("paper_size") if type(paper_size) in (list, tuple): # Assume it's a width/height spec printer.setPaperSize(QSizeF(*paper_size), unit) elif paper_size is not None: # Assume it's a size name printer.setPaperSize(getattr(QPrinter, paper_size, 'AnsiA')) # If paper_size is None, we just leave it at the printer's default # Set the resolution resolution = print_settings.get("resolution") if resolution: printer.setResolution(int(resolution)) # Show a print dialog, unless we want silent printing if not print_settings.get("silent"): print_dialog = QPrintDialog(printer, self) print_dialog.setWindowTitle("Print Page") if not print_dialog.exec_() == QDialog.Accepted: return False self.print_(printer) return True
def slotPrint(self): printer = QPrinter() dlg = QPrintDialog(printer, self) dlg.setWindowTitle(app.caption(_("Print"))) if dlg.exec_(): self.webview.print_(printer)