def slotPrint(self): import cups import subprocess from PyQt5.QtPrintSupport import QPrintDialog from PyQt5.QtPrintSupport import QPrinter from PyQt5 import QtGui croppedFilename = "%s-cropped.pdf" % splitext( str_unicode(self.fileName))[0] # printerCon = cups.Connection() printer = QPrinter() printDlg = QPrintDialog(printer) if printDlg.exec() == QDialog.Accepted: printerName = printer.printerName() cmdLine = ['lp', '-d', printerName] cmdLine += ['-n', str(printer.copyCount())] cmdLine += ['-o', 'fit-to-page' ] # We want to print out the cropped PDF anyway. # Handle duplex if printer.duplex() == QPrinter.DuplexNone: cmdLine += ['-o', 'Duplex=None'] if printer.duplex() == QPrinter.DuplexLongSide: cmdLine += ['-o', 'Duplex=DuplexNoTumble'] if printer.duplex() == QPrinter.DuplexShortSide: cmdLine += ['-o', 'Duplex=DuplexTumble'] # Orientation if printer.pageLayout().orientation() == QPageLayout.Landscape: cmdLine += ['-o', 'landscape'] # Color mode if printer.colorMode() == QPrinter.GrayScale: cmdLine += ['-o', 'ColorMode=Grayscale'] if printer.colorMode() == QPrinter.Color: cmdLine += ['-o', 'ColorMode=Color'] # Page size pagesizeid_to_pagesize = {} for prop_name in QPageSize.__dict__.keys(): if type(QPageSize.__dict__[prop_name]) == type( QPageSize.PageSizeId()): pagesizeid_to_pagesize[ QPageSize.__dict__[prop_name]] = prop_name cmdLine += [ '-o', 'media=' + pagesizeid_to_pagesize[printer.pageLayout().pageSize().id()] ] cmdLine.append(croppedFilename) # printersLst = printerCon.getPrinters() # printer = QInputDialog.getItem(self, "Please select printer", "", list(printersLst.keys())) print('Print command line: ' + ' '.join(cmdLine)) subprocess.check_call(cmdLine)
def mprint(self): printer = QPrinter(QPrinter.HighResolution) docName = "Humm" #self.d_plot.title().text() #if ( not docName.isEmpty() ): #docName.replace ( QRegExp ( QString.fromLatin1 ( "\n" ) ), tr ( " -- " ) ) printer.setDocName(docName) printer.setCreator("Bode example") printer.setOrientation(QPrinter.Landscape) dialog = QPrintDialog(printer) if (dialog.exec_()): renderer = Qwt.QwtPlotRenderer() if (printer.colorMode() == QPrinter.GrayScale): renderer.setDiscardFlag(Qwt.QwtPlotRenderer.DiscardBackground) renderer.setDiscardFlag( Qwt.QwtPlotRenderer.DiscardCanvasBackground) renderer.setDiscardFlag(Qwt.QwtPlotRenderer.DiscardCanvasFrame) renderer.setLayoutFlag(Qwt.QwtPlotRenderer.FrameWithScales) renderer.renderTo(self.d_plot, 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)