def exportPDF(self, view, file_name, width, height): pdf = QPrinter() pdf.setOutputFormat(QPrinter.PdfFormat) pdf.setPrintRange(QPrinter.AllPages) pdf.setOrientation(QPrinter.Portrait) pdf.setResolution(QPrinter.HighResolution) pdf.setPaperSize(QSizeF(width, height), QPrinter.Point) pdf.setFullPage(True) pdf.setOutputFileName(file_name) view.mainFrame().print_(pdf) QApplication.restoreOverrideCursor()
def print_pdf(self): if self.deck is not None: #Setting the printer printer = QPrinter(QPrinter.HighResolution) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOrientation(getattr(QPrinter, "Portrait")) printer.setOutputFileName(self.path) printer.setPaperSize(getattr(QPrinter, self.paper)) printer.setFullPage(True) guide = self.max_cards() printer.setOrientation(getattr(QPrinter, guide["orientation"])) print guide, self.card_size #Start printing with QPainter(printer) as paint: ind = 0 resol = printer.resolution() for c in self.deck: c.resize(self.card_size[0], self.card_size[1]) if ind == guide["max"]: printer.newPage() ind = 0 col = ind % guide["horizontal"] fil = ind // guide["horizontal"] print ind, fil, col target = QRectF((col)*self.card_size[0]*resol, (fil)*self.card_size[1]*resol, self.card_size[0]*resol, self.card_size[1]*resol) self.preview_card(c) self.scene.render(paint, target=target, source=QRectF(0,0,c.width(),c.height())) ind += 1
def save_report(self): """Save report""" filename = QFileDialog.getSaveFileName( self, "Save Report", self.save_dir, "HTML (*.html);;PDF (*.pdf);;Report (*.report)") if not filename: return QDialog.Rejected self.save_dir = os.path.dirname(filename) self.saveSettings() _, extension = os.path.splitext(filename) if extension == ".pdf": printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filename) self.report_view.print_(printer) elif extension == ".report": self.save(filename) else: frame = self.report_view.page().currentFrame() with open(filename, "w", encoding="utf-8") as f: f.write(frame.documentElement().toInnerXml()) self.report_changed = False return QDialog.Accepted
def plotPDF(self, width, height, output_file, units = "pixels", _plotting_object = None): """Plots the data specified in the current input file as a page in a PDF file with the given width and height, writing the output to the specified output file. The optional units argument specifies the units used to measure the plot size; by default, pixels are used, but "cm", "mm" and "in" are also acceptable. Returns the QPrinter object used to write the file.""" pdf = QPrinter() pdf.setOutputFormat(QPrinter.PdfFormat) pdf.setOutputFileName(output_file) if units == "in": width = pdf.logicalDpiX() * width height = pdf.logicalDpiY() * height elif units == "cm": width = pdf.logicalDpiX() * (width / 2.54) height = pdf.logicalDpiY() * (height / 2.54) elif units == "mm": width = pdf.logicalDpiX() * (width / 25.4) height = pdf.logicalDpiY() * (height / 25.4) elif units != "pixels": raise BDianaError, "Unknown units specified to plotPDF: %s" % units pdf.setPaperSize(QSizeF(width, height), QPrinter.DevicePixel) pdf.setFullPage(True) return self._plot(width, height, pdf, _plotting_object)[0]
def print_to_pdf(self, path, paper_size = (8.5, 11.0), paper_margins = (0, 0, 0, 0), paper_units = QPrinter.Inch, zoom_factor = 1.0, ): """Saves page as a pdf file. See qt4 QPrinter documentation for more detailed explanations of options. :param path: The destination path. :param paper_size: A 2-tuple indicating size of page to print to. :param paper_margins: A 4-tuple indicating size of each margin. :param paper_units: Units for pager_size, pager_margins. :param zoom_factor: Scale the output content. """ assert len(paper_size) == 2 assert len(paper_margins) == 4 printer = QPrinter(mode = QPrinter.ScreenResolution) printer.setOutputFormat(QPrinter.PdfFormat) printer.setPaperSize(QtCore.QSizeF(*paper_size), paper_units) printer.setPageMargins(*(paper_margins + (paper_units,))) printer.setFullPage(True) printer.setOutputFileName(path) if self.webview is None: self.webview = QtWebKit.QWebView() self.webview.setPage(self.page) self.webview.setZoomFactor(zoom_factor) self.webview.print_(printer)
def save_report(self): """Save report""" filename = QFileDialog.getSaveFileName( self, "Save Report", self.save_dir, "HTML (*.html);;PDF (*.pdf);;Report (*.report)") if not filename: return QDialog.Rejected self.save_dir = os.path.dirname(filename) self.saveSettings() _, extension = os.path.splitext(filename) if extension == ".pdf": printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filename) self.report_view.print_(printer) elif extension == ".report": with open(filename, 'wb') as f: pickle.dump(self, f) else: frame = self.report_view.page().currentFrame() with open(filename, "w") as f: f.write(frame.documentElement().toInnerXml()) self.report_changed = False return QDialog.Accepted
def savePdf(self): """ Save to pdf file """ fileName = QFileDialog.getSaveFileName( self, 'Save to PDF', "", "PDF file (*.pdf);;All Files (*.*)") # new in v17.1 if QtHelper.IS_QT5: _filename, _type = fileName else: _filename = fileName # end of new if _filename: printer = QPrinter(QPrinter.HighResolution) printer.setPageSize(QPrinter.A4) printer.setColorMode(QPrinter.Color) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(_filename) doc = QTextDocument() if self.toXml: doc.setPlainText(self.txtEdit.text()) else: doc.setHtml(self.txtEdit.toHtml()) doc.print_(printer)
def __createPdf(self, savePath): """ Diese Funktion druckt den Charakter in ein PDF-Dokument. """ # Wenn Unterverzeichnis nicht existiert, erstelle es dirname = os.path.dirname(savePath) if not os.path.exists(dirname): os.makedirs(dirname) printer = QPrinter(QPrinter.PrinterResolution) #printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setPaperSize(QPrinter.A4) printer.setFullPage(True) printer.setOutputFileName(savePath) drawSheet = RenderSheet(self.__storage, self.__character, printer, self) try: drawSheet.createSheets() except ErrSpeciesNotExisting as e: MessageBox.exception(self, e.message, e.description)
def print_to_pdf( self, path, paper_size=(8.5, 11.0), paper_margins=(0, 0, 0, 0), paper_units=QPrinter.Inch, zoom_factor=1.0, ): """Saves page as a pdf file. See qt4 QPrinter documentation for more detailed explanations of options. :param path: The destination path. :param paper_size: A 2-tuple indicating size of page to print to. :param paper_margins: A 4-tuple indicating size of each margin. :param paper_units: Units for pager_size, pager_margins. :param zoom_factor: Scale the output content. """ assert len(paper_size) == 2 assert len(paper_margins) == 4 printer = QPrinter(mode=QPrinter.ScreenResolution) printer.setOutputFormat(QPrinter.PdfFormat) printer.setPaperSize(QtCore.QSizeF(*paper_size), paper_units) printer.setPageMargins(*(paper_margins + (paper_units, ))) printer.setFullPage(True) printer.setOutputFileName(path) if self.webview is None: self.webview = QtWebKit.QWebView() self.webview.setPage(self.page) self.webview.setZoomFactor(zoom_factor) self.webview.print_(printer)
def printPage(ok): printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOrientation(QPrinter.Landscape) printer.setPageMargins(0.1,0.1,0.1,0.1, QPrinter.Millimeter) printer.setOutputFileName(sys.argv[2]) view.print_(printer) app.exit()
def writePdf(dir_): newbody = originHTML.format(**htmlpara) printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(dir_ + '.pdf') printer.setPageSize(QPrinter.A4) text = QTextDocument() text.setHtml(newbody.decode('utf-8')) text.print_(printer)
def printMail(self): printer = QPrinter(mode=QPrinter.HighResolution) printer.setCreator("Daaq Mail") title = 'Daaq Mail' #title = validateFileName(title) printer.setDocName(title) printer.setOutputFileName(DOC_DIR + title + ".pdf") print_dialog = QPrintPreviewDialog(printer, self) print_dialog.paintRequested.connect(self.textViewer.print_) print_dialog.exec_()
def writePdf(dir_): newbody = originHTML.format(**htmlpara) printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(dir_+'.pdf') printer.setPageSize(QPrinter.A4) text = QTextDocument() text.setHtml(newbody.decode('utf-8')) text.print_(printer)
def handlePrintPdf(self): printer = QPrinter() pdffile = 'test.pdf' printer.setResolution(96) printer.setPageSize(QPrinter.Letter) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(pdffile) printer.setPageMargins(5, 5, 5, 10, QPrinter.Millimeter) document = self.makeTableDocument() document.setPageSize(QSizeF(printer.pageRect().size())) document.print_(printer)
def __init__(self, parent=None, fakeStartup=False, filename=None): ''' Constructor ''' self._fakeStartup = fakeStartup super(DrumBurp, self).__init__(parent) self._state = None self._asciiSettings = None self._printer = None self.setupUi(self) self.scoreScene = None self.paperBox.blockSignals(True) self.paperBox.clear() self._knownPageHeights = [] printer = QPrinter() printer.setOutputFileName("invalid.pdf") for name in dir(QPrinter): attr = getattr(QPrinter, name) if (isinstance(attr, QPrinter.PageSize) and name != "Custom"): self.paperBox.addItem(name) printer.setPaperSize(attr) self._knownPageHeights.append(printer.pageRect().height()) self._pageHeight = printer.paperRect().height() self.paperBox.blockSignals(False) settings = self._makeQSettings() self.recentFiles = [ unicode(fname) for fname in settings.value("RecentFiles").toStringList() if os.path.exists(unicode(fname)) ] if filename is None: filename = (None if len(self.recentFiles) == 0 else self.recentFiles[0]) self.filename = filename self.addToRecentFiles() self.updateRecentFiles() self.songProperties = QDisplayProperties() # Create scene self.scoreScene = QScore(self) self.restoreGeometry(settings.value("Geometry").toByteArray()) self.restoreState(settings.value("MainWindow/State").toByteArray()) self.statusbar.addPermanentWidget(QFrame()) self.availableNotesLabel = QLabel() self.availableNotesLabel.setMinimumWidth(250) self.statusbar.addPermanentWidget(self.availableNotesLabel) self._infoBar = QLabel() self.statusbar.addPermanentWidget(self._infoBar) self._initializeState() self.setSections() QTimer.singleShot(0, self._startUp) self.actionCheckOnStartup.setChecked( settings.value("CheckOnStartup").toBool())
def __saveAsPDF( self, fileName ): " Saves the flowchart as an PDF file " printer = QPrinter() printer.setOutputFormat( QPrinter.PdfFormat ) printer.setPaperSize( QSizeF( self.scene.width(), self.scene.height() ), QPrinter.Point ) printer.setFullPage( True ) printer.setOutputFileName( fileName ) painter = QPainter( printer ) self.scene.render( painter ) painter.end() return
def print_pdf(html, destination): app = QApplication(sys.argv) web = QWebView() web.setHtml(html) printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(destination) web.print_(printer) app.exit()
def lunchPrintPdf(self, printer): fileName = QFileDialog.getSaveFileName(self, 'Save File as', '', '*.pdf') document = self.doc1 #document = QTextDocument(document) printer = QPrinter() printer.setResolution(96) printer.setPageMargins(5, 5, 5, 5, QPrinter.Millimeter) printer.setPageSize(QPrinter.Letter) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(fileName) #document.setPageSize(QSizeF(printer.pageRect().size())) #print(document.pageSize(), printer.resolution(), printer.pageRect()) document.print_(printer)
def __saveAsPDF(self, fileName): " Saves the flowchart as an PDF file " printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setPaperSize(QSizeF(self.scene.width(), self.scene.height()), QPrinter.Point) printer.setFullPage(True) printer.setOutputFileName(fileName) painter = QPainter(printer) self.scene.render(painter) painter.end() return
def __init__(self, parent = None, fakeStartup = False, filename = None): ''' Constructor ''' self._fakeStartup = fakeStartup super(DrumBurp, self).__init__(parent) self._state = None self._asciiSettings = None self._printer = None self.setupUi(self) self.scoreScene = None self.paperBox.blockSignals(True) self.paperBox.clear() self._knownPageHeights = [] printer = QPrinter() printer.setOutputFileName("invalid.pdf") for name in dir(QPrinter): attr = getattr(QPrinter, name) if (isinstance(attr, QPrinter.PageSize) and name != "Custom"): self.paperBox.addItem(name) printer.setPaperSize(attr) self._knownPageHeights.append(printer.pageRect().height()) self._pageHeight = printer.paperRect().height() self.paperBox.blockSignals(False) settings = self._makeQSettings() self.recentFiles = [unicode(fname) for fname in settings.value("RecentFiles").toStringList() if os.path.exists(unicode(fname))] if filename is None: filename = (None if len(self.recentFiles) == 0 else self.recentFiles[0]) self.filename = filename self.addToRecentFiles() self.updateRecentFiles() self.songProperties = QDisplayProperties() # Create scene self.scoreScene = QScore(self) self.restoreGeometry(settings.value("Geometry").toByteArray()) self.restoreState(settings.value("MainWindow/State").toByteArray()) self.statusbar.addPermanentWidget(QFrame()) self.availableNotesLabel = QLabel() self.availableNotesLabel.setMinimumWidth(250) self.statusbar.addPermanentWidget(self.availableNotesLabel) self._infoBar = QLabel() self.statusbar.addPermanentWidget(self._infoBar) self._initializeState() self.setSections() QTimer.singleShot(0, self._startUp) self.actionCheckOnStartup.setChecked(settings.value("CheckOnStartup").toBool())
class WebKitPDF ( QObject ): def __init__ ( self, url, dest ): QObject.__init__ ( self ) self.dest = dest self.page = QtWebKit.QWebPage ( self ) self.mainFrame = self.page.mainFrame() self.mainFrame.load ( QUrl ( url ) ) # Settings # Disable the scrollbars self.mainFrame.setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.mainFrame.setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff) self.connect ( self.page, SIGNAL ( "loadProgress(int)" ), self.loadProgress ) self.connect ( self.page, SIGNAL ( "loadFinished(bool)" ), self.renderPDF ) def loadProgress ( self, progress ): print "Progress: ", progress def renderPDF ( self, status ): print "Load finished with status: ", status print "Rendering PDF ..." contentsSize = self.mainFrame.contentsSize() contentsSize.setWidth(1280) self.page.setViewportSize ( contentsSize ) self.printer = QPrinter ( QPrinter.PrinterResolution ) #self.printer = QPrinter ( QPrinter.ScreenResolution ) self.printer.setOutputFormat ( QPrinter.PdfFormat ) #self.printer.setPaperSize ( QPrinter.A4 ) self.printer.setFullPage( True ) self.printer.setPaperSize ( QSizeF( contentsSize ), QPrinter.DevicePixel ) self.printer.setOrientation ( QPrinter.Portrait ) self.printer.setOutputFileName ( self.dest ) self.painter = QPainter ( self.printer ) self.painter.setRenderHint ( QPainter.Antialiasing ) self.mainFrame.render ( self.painter ) self.painter.end() app = QtGui.QApplication.instance() app.exit ( 0 )
def init_print(self, linenos=True, style="default"): app = QApplication(sys.argv) # noqa doc = QTextDocument() doc.setHtml( self.highlight_file(linenos=linenos, style=style) ) printer = QPrinter() printer.setOutputFileName(self.pdf_file) printer.setOutputFormat(QPrinter.PdfFormat) page_size_dict = {"a2": QPrinter.A2, "a3": QPrinter.A3, "a4": QPrinter.A4} printer.setPageSize(page_size_dict.get(self.size.lower(), QPrinter.A4)) printer.setPageMargins(15, 15, 15, 15, QPrinter.Millimeter) doc.print_(printer) logging.info("PDF created at %s" % (self.pdf_file))
def writePdfabs(dir_): updates = SETTING().get('pdfpara') htmlpara.update(updates) newbody = originHTML.format(**htmlpara) # with open('t.html', 'wb') as f: # f.write(newbody) # f.close() printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(dir_) printer.setPageSize(QPrinter.A4) text = QTextDocument() text.setHtml(newbody.decode('utf-8')) text.print_(printer)
def writePdfabs(dir_): updates = PDF_PARAMETER htmlpara.update(updates) newbody = originHTML.format(**htmlpara) # with open('t.html', 'wb') as f: # f.write(newbody) # f.close() printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(dir_) printer.setPageSize(QPrinter.A4) text = QTextDocument() text.setHtml(newbody.decode('utf-8')) text.print_(printer)
def printBill(self): self.saveTab() #save before printing so that changes will be added to print html = self.creator.makePrintfile(self.item) document = QWebView() document.setHtml(html) printer = QPrinter() printer.setOutputFileName(getBillPath() + str(datetime.datetime.now())[0:-7] + '_' + str(self.item.id) + '.pdf') printpreview = QPrintDialog(printer, self) printpreview.exec() document.print(printer)
def init_print(self, linenos=True, style="default"): app = QApplication(sys.argv) # noqa doc = QTextDocument() doc.setHtml(self.highlight_file(linenos=linenos, style=style)) printer = QPrinter() printer.setOutputFileName(self.pdf_file) printer.setOutputFormat(QPrinter.PdfFormat) page_size_dict = { "a2": QPrinter.A2, "a3": QPrinter.A3, "a4": QPrinter.A4 } printer.setPageSize(page_size_dict.get(self.size.lower(), QPrinter.A4)) printer.setPageMargins(15, 15, 15, 15, QPrinter.Millimeter) doc.print_(printer) logging.info("PDF created at %s" % (self.pdf_file))
def renderPdf(self, fileName): p = QPrinter() p.setOutputFormat(QPrinter.PdfFormat) p.setOutputFileName(fileName) p.setResolution(pdf_dpi) paperSize = self.m_paperSize if not len(paperSize): pageSize = QSize(self.m_page.mainFrame().contentsSize()) paperSize['width'] = str(pageSize.width()) + 'px' paperSize['height'] = str(pageSize.height()) + 'px' paperSize['border'] = '0px' if paperSize.get('width') and paperSize.get('height'): sizePt = QSizeF(ceil(self.stringToPointSize(paperSize['width'])), ceil(self.stringToPointSize(paperSize['height']))) p.setPaperSize(sizePt, QPrinter.Point) elif 'format' in paperSize: orientation = QPrinter.Landscape if paperSize.get( 'orientation') and paperSize['orientation'].lower( ) == 'landscape' else QPrinter.Portrait orientation = QPrinter.Orientation(orientation) p.setOrientation(orientation) formats = { 'A3': QPrinter.A3, 'A4': QPrinter.A4, 'A5': QPrinter.A5, 'Legal': QPrinter.Legal, 'Letter': QPrinter.Letter, 'Tabloid': QPrinter.Tabloid } p.setPaperSize(QPrinter.A4) # fallback for format, size in formats.items(): if format.lower() == paperSize['format'].lower(): p.setPaperSize(size) break else: return False border = floor(self.stringToPointSize( paperSize['border'])) if paperSize.get('border') else 0 p.setPageMargins(border, border, border, border, QPrinter.Point) self.m_page.mainFrame().print_(p) return True
def render_pdf(self, page, fileName, paperSize=None): """Renders the page into a pdf :param page: The webpage that we want to render :param fileName: The path where we want to save the pdf. For example /home/user/mypdf.pdf :param paperSize: An PaperSize object that will be used to render the webpage """ mainFrame = page.currentFrame() printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(fileName) printer.setResolution(self._get_default_dpi()) if paperSize is None: ps = mainFrame.contentsSize() paperSize = PaperSize(width=ps.width(), height=ps.width(), margin=(0, 0, 0, 0), orientation=None, page_type=None) if paperSize.page_type is not None: if paperSize.orientation.lower() == "landscape": orientation = QPrinter.Landscape else: orientation = QPrinter.Portrait printer.setOrientation(orientation) printer.setPaperSize(QPrinter.A4) # Fallback for f in self.PAGE_TYPE: if paperSize.page_type.lower() == f[0].lower(): printer.setPaperSize(f[1]) break else: sizePt = QSizeF(paperSize.width, paperSize.height) printer.setPaperSize(sizePt, QPrinter.Point) printer.setPageMargins(paperSize.margin[0], paperSize.margin[1], paperSize.margin[2], paperSize.margin[3], QPrinter.Point) mainFrame.print_(printer)
def __outPDF(self): """ To save the profile as pdf file """ fileName = QFileDialog.getSaveFileName( self.__iface.mainWindow(), QCoreApplication.translate("VDLTools", "Save As"), QCoreApplication.translate("VDLTools", "Profile.pdf"),"Portable Document Format (*.pdf)") if fileName is not None: if self.__lib == 'Qwt5': printer = QPrinter() printer.setCreator(QCoreApplication.translate("VDLTools", "QGIS Profile Plugin")) printer.setOutputFileName(fileName) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOrientation(QPrinter.Landscape) self.__plotWdg.print_(printer) elif self.__lib == 'Matplotlib': self.__plotWdg.figure.savefig(str(fileName))
def getPDFPrinter(self, name): printer = QPrinter(QPrinter.HighResolution) path = QFileDialog.getSaveFileName( None, None, os.path.join( self.settings.value("save path", os.path.expanduser("~")), # default folder name + ".pdf" # default filename ), "PDF (*.pdf)" ) if path is not None and path != "": self.settings.setValue("save path", os.path.dirname(path)) printer.setOutputFileName(path) return printer else: return None
def print_grid(self): if self.deck is not None: #Setting the printer printer = QPrinter(QPrinter.HighResolution) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOrientation(getattr(QPrinter, self.orientation)) printer.setOutputFileName(self.path) printer.setPaperSize(getattr(QPrinter, self.paper)) #Start printing with QPainter(printer) as paint: first = True for c in self.deck: if not first: printer.newPage() first = False self.preview_card(c) self.scene.render(paint)
def outPDF(self, iface, wdg, mdl, library): for i in range(0, mdl.rowCount()): if mdl.item(i, 0).data(Qt.CheckStateRole): name = str(mdl.item(i, 2).data(Qt.EditRole)) break fileName = QFileDialog.getSaveFileName( iface.mainWindow(), "Save As", "Profile of " + name + ".pdf", "Portable Document Format (*.pdf)") if fileName: if library == "Qwt5" and has_qwt: printer = QPrinter() printer.setCreator('QGIS Profile Plugin') printer.setOutputFileName(fileName) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOrientation(QPrinter.Landscape) wdg.plotWdg.print_(printer) elif library == "Matplotlib" and has_mpl: wdg.plotWdg.figure.savefig(str(fileName))
def _exportCompositionAsPDF(self,composition,filePath): """ Render the composition as a PDF file. """ printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filePath) printer.setPaperSize(QSizeF(composition.paperWidth(),composition.paperHeight()),QPrinter.Millimeter) printer.setFullPage(True) printer.setColorMode(QPrinter.Color) printer.setResolution(composition.printResolution()) #Use painter to send output to printer pdfPainter = QPainter(printer) paperRectMM = printer.pageRect(QPrinter.Millimeter) paperRectPixel = printer.pageRect(QPrinter.DevicePixel) composition.render(pdfPainter,paperRectPixel,paperRectMM) pdfPainter.end()
def imprimir(self): printer=QPrinter(QPrinter.HighResolution) printer.setPaperSize(QPrinter.Letter) printer.setOutputFormat(QPrinter.PdfFormat) ruta=os.path.join(self.parent.cfg.get("factura", "ruta"),'Factura-'+str(self.num)+'.pdf') printer.setOutputFileName(ruta) prev=QPrintDialog(printer,self.padre) if prev.exec_()==QDialog.Accepted: paint=QPainter() paint.begin(printer) self.escena.render(paint) paint.end() print "Imprimiendo..." if sys.platform == 'linux2': os.system("gnome-open '%s' "%ruta) elif sys.platform == 'win32': os.system("start '%s'"%ruta)
def renderPdf(self, fileName): p = QPrinter() p.setOutputFormat(QPrinter.PdfFormat) p.setOutputFileName(fileName) p.setResolution(pdf_dpi) paperSize = self.m_paperSize if not len(paperSize): pageSize = QSize(self.m_page.mainFrame().contentsSize()) paperSize['width'] = str(pageSize.width()) + 'px' paperSize['height'] = str(pageSize.height()) + 'px' paperSize['border'] = '0px' if paperSize.get('width') and paperSize.get('height'): sizePt = QSizeF(ceil(self.stringToPointSize(paperSize['width'])), ceil(self.stringToPointSize(paperSize['height']))) p.setPaperSize(sizePt, QPrinter.Point) elif 'format' in paperSize: orientation = QPrinter.Landscape if paperSize.get('orientation') and paperSize['orientation'].lower() == 'landscape' else QPrinter.Portrait orientation = QPrinter.Orientation(orientation) p.setOrientation(orientation) formats = { 'A3': QPrinter.A3, 'A4': QPrinter.A4, 'A5': QPrinter.A5, 'Legal': QPrinter.Legal, 'Letter': QPrinter.Letter, 'Tabloid': QPrinter.Tabloid } p.setPaperSize(QPrinter.A4) # fallback for format, size in formats.items(): if format.lower() == paperSize['format'].lower(): p.setPaperSize(size) break else: return False border = floor(self.stringToPointSize(paperSize['border'])) if paperSize.get('border') else 0 p.setPageMargins(border, border, border, border, QPrinter.Point) self.m_page.mainFrame().print_(p) return True
def print_pdf(html, filename): """ Print HTML to PDF. """ wv = QWebView() wv.setHtml(html) # doc = QTextDocument() # doc.setHtml(html) printer = QPrinter() printer.setOutputFileName(filename) printer.setOutputFormat(QPrinter.PdfFormat) printer.setPageSize(QPrinter.A4) printer.setPageMargins(15, 15, 15, 15, QPrinter.Millimeter) # doc.print_(printer) wv.print_(printer) print("PDF Generated: " + filename)
def _exportCompositionAsPDF(self, composition, filePath): """ Render the composition as a PDF file. """ printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filePath) printer.setPaperSize( QSizeF(composition.paperWidth(), composition.paperHeight()), QPrinter.Millimeter) printer.setFullPage(True) printer.setColorMode(QPrinter.Color) printer.setResolution(composition.printResolution()) #Use painter to send output to printer pdfPainter = QPainter(printer) paperRectMM = printer.pageRect(QPrinter.Millimeter) paperRectPixel = printer.pageRect(QPrinter.DevicePixel) composition.render(pdfPainter, paperRectPixel, paperRectMM) pdfPainter.end()
def renderpdf(url, dest): app = QApplication(sys.argv) web = QWebView() request = QNetworkRequest(QUrl(url)) request.setRawHeader("X-Rendering-PDF", "true") web.load(request) printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(dest) def print_file(): web.print_(printer) QApplication.exit() QObject.connect(web, SIGNAL("loadFinished(bool)"), print_file) app.exec_()
def print_file(fileName, printFunction): """This method print a file This method print a file, fileName is the default fileName, and printFunction is a funcion that takes a QPrinter object and print the file, the print method More info on:http://doc.qt.nokia.com/latest/printing.html""" printer = QPrinter(QPrinter.HighResolution) printer.setPageSize(QPrinter.A4) printer.setOutputFileName(fileName) printer.setDocName(fileName) preview = QPrintPreviewDialog(printer) preview.paintRequested[QPrinter].connect(printFunction) size = QApplication.instance().desktop().screenGeometry() width = size.width() - 100 height = size.height() - 100 preview.setMinimumSize(width, height) preview.exec_()
def on_actionExportPDF_triggered(self): try: printer = QPrinter(mode = QPrinter.HighResolution) printer.setPaperSize(self._getPaperSize()) printer.setOutputFormat(QPrinter.PdfFormat) if self.filename: outfileName = list(os.path.splitext(self.filename)[:-1]) outfileName = os.extsep.join(outfileName + ["pdf"]) else: outfileName = "Untitled.pdf" printer.setOutputFileName(outfileName) printer.setPaperSize(self._getPaperSize()) dialog = QPrintPreviewDialog(printer, parent = self) def updatePages(qprinter): self.scoreScene.printScore(qprinter, self.scoreView) dialog.paintRequested.connect(updatePages) dialog.exec_() self.updateStatus("Exported to PDF %s" % outfileName) except StandardError: QMessageBox.warning(self.parent(), "Export failed!", "Could not export PDF to " + outfileName)
def generate_pdf(template, filename, media_path=None, template_context=None): global app if template_context is None: template_context = {} template_context['media_path'] = media_path #put your templates in the pdf subdirectory template_path = '{0}.html'.format(template) template = jinja_env.get_template(template_path) html = template.render(**template_context) app = QApplication.instance() if app is None: app = QApplication(['--platform', 'minimal']) web = QWebView() url = QUrl.fromLocalFile(media_path) web.setHtml(html, baseUrl=url) #we need this call to correctly render images... app.processEvents() printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filename) web.print_(printer)
def _save_report(self): filename = QFileDialog.getSaveFileName( self, "Save Report", self.save_dir, "HTML (*.html);;PDF (*.pdf);;Report (*.report)") if not filename: return self.save_dir = os.path.dirname(filename) self.saveSettings() _, extension = os.path.splitext(filename) if extension == ".pdf": printer = QPrinter() printer.setPageSize(QPrinter.A4) printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(filename) self.report_view.print_(printer) elif extension == ".report": with open(filename, 'wb') as f: pickle.dump(self, f) else: frame = self.report_view.page().currentFrame() with open(filename, "w") as f: f.write(frame.documentElement().toInnerXml())
def on_actionExportPDF_triggered(self): try: printer = QPrinter(mode=QPrinter.HighResolution) printer.setPaperSize(self._getPaperSize()) printer.setOutputFormat(QPrinter.PdfFormat) if self.filename: outfileName = list(os.path.splitext(self.filename)[:-1]) outfileName = os.extsep.join(outfileName + ["pdf"]) else: outfileName = "Untitled.pdf" printer.setOutputFileName(outfileName) printer.setPaperSize(self._getPaperSize()) dialog = QPrintPreviewDialog(printer, parent=self) def updatePages(qprinter): self.scoreScene.printScore(qprinter, self.scoreView) dialog.paintRequested.connect(updatePages) dialog.exec_() self.updateStatus("Exported to PDF %s" % outfileName) except StandardError: QMessageBox.warning(self.parent(), "Export failed!", "Could not export PDF to " + outfileName)
def print_document(document, verse_key, pdf = False, copies=1, skip=False): printer = QPrinter(QPrinter.HighResolution) if not pdf: printer.setOutputFormat(QPrinter.NativeFormat) else: printer.setOutputFormat(QPrinter.PdfFormat) printer.setOutputFileName(ROOT + 'verse.pdf') printer.setPaperSize(QPrinter.A4) printer.setCopyCount(copies) printer.setPageMargins(10, 10, 10, 10, QPrinter.Millimeter) doc = QTextDocument() doc.setHtml(concatenate_pages(document, verse_key, skip)) dialog = QPrintPreviewDialog(printer) dialog.setWindowFlags(Qt.Window) dialog.setWindowTitle('Print preview: parse results') def preview(): doc.print_(printer) dialog.paintRequested.connect(preview) dialog.exec_()
def outPrint( self, iface, wdg, mdl, library): # Postscript file rendering doesn't work properly yet. for i in range(0, mdl.rowCount()): if mdl.item(i, 0).data(Qt.CheckStateRole): name = str(mdl.item(i, 2).data(Qt.EditRole)) #return fileName = QFileDialog.getSaveFileName(iface.mainWindow(), "Save As", "Profile of " + name + ".ps", "PostScript Format (*.ps)") if fileName: if library == "Qwt5" and has_qwt: printer = QPrinter() printer.setCreator("QGIS Profile Plugin") printer.setDocName("QGIS Profile") printer.setOutputFileName(fileName) printer.setColorMode(QPrinter.Color) printer.setOrientation(QPrinter.Portrait) dialog = QPrintDialog(printer) if dialog.exec_(): wdg.plotWdg.print_(printer) elif library == "Matplotlib" and has_mpl: wdg.plotWdg.figure.savefig(str(fileName))
def saveWindow(self): fileTypes = {'PDF':('pdf',), 'Postscript':('ps',),'SVG':('svg',)} filters = ';;'.join(['%s (%s)' % (k, ' '.join(['*.'+e for e in v])) for k, v in fileTypes.items()]) dlg = QFileDialog(self, QCoreApplication.translate('QwtPlot', 'Select type and name of file to save'), SimuVis4.Globals.defaultFolder or '', filters) dlg.setFileMode(QFileDialog.AnyFile) dlg.setAcceptMode(QFileDialog.AcceptSave) if dlg.exec_() != QDialog.Accepted: return tmp = str(dlg.selectedFilter()) fileType = tmp[:tmp.find('(')-1] dlg.setDefaultSuffix(fileTypes[fileType][0]) files = dlg.selectedFiles() if not files: return fileName = unicode(files[0]) SimuVis4.Globals.defaultFolder, tmp = os.path.split(fileName) if fileType == 'PDF': printer = QPrinter() printer.setOutputFormat(QPrinter.PdfFormat) printer.setOrientation(QPrinter.Landscape) printer.setOutputFileName(fileName) printer.setCreator('SimuVis4') self.plot.print_(printer) elif fileType == 'Postscript': printer = QPrinter() printer.setOutputFormat(QPrinter.PostScriptFormat) printer.setOrientation(QPrinter.Landscape) printer.setOutputFileName(fileName) printer.setCreator('SimuVis4') self.plot.print_(printer) elif fileType == 'SVG': generator = QSvgGenerator() generator.setFileName(fileName) generator.setSize(QSize(800, 600)) self.plot.print_(generator)
def print_file(fileName, printFunction): """This method print a file This method print a file, fileName is the default fileName, and printFunction is a funcion that takes a QPrinter object and print the file, the print method More info on:http://doc.qt.nokia.com/latest/printing.html""" #TODO: Make that the option it's taken from settings. maybe #this should be a class to manage all cases? printer = QPrinter(QPrinter.HighResolution) printer.setPageSize(QPrinter.A4) printer.setOutputFileName(fileName) printer.setDocName(fileName) #PRINT PREVIEW OPTIONS #TODO: the follow imp. dipatch an error on execution time we need to review #if the error belongs to qt # preview = QPrintPreviewDialog(printer) # preview.paintRequested[QPrinter].connect(printFunction) # preview.exec_() dialog = QPrintDialog(printer) if dialog.exec_(): printFunction(printer)
def __createPdf(self, savePath): """ Diese Funktion druckt den Charakter in ein PDF-Dokument. """ # Wenn Unterverzeichnis nicht existiert, erstelle es dirname = os.path.dirname(savePath) if not os.path.exists(dirname): os.makedirs(dirname) printer = QPrinter(QPrinter.PrinterResolution) #printer = QPrinter() printer.setOutputFormat( QPrinter.PdfFormat ) printer.setPaperSize( QPrinter.A4 ) printer.setFullPage( True ) printer.setOutputFileName( savePath ) drawSheet = RenderSheet( self.__storage, self.__character, printer, self ) try: drawSheet.createSheets() except ErrSpeciesNotExisting as e: MessageBox.exception( self, e.message, e.description )
def main(): app = QApplication(sys.argv) # Preparing the pdf doc = QTextDocument() printer = QPrinter() printer.setOutputFileName("KabitGurdas.pdf") printer.setOutputFormat(QPrinter.PdfFormat) # Setting page size as A5 printer.setPaperSize(QPrinter.A5); # page margin printer.setPageMargins(12, 16, 12, 20, QPrinter.Millimeter) doc.setPageSize(QSizeF(printer.pageRect().size())) painter = QPainter() painter.begin( printer ) # Set poem book and get each poem in pdf book = kb() for KabitNumber in range(1,676): # Add text in html to page doc.setHtml(book.getKabitHTML(KabitNumber)) doc.defaultFont().setPointSize(20) # A new page printer.newPage() # Create a QPainter to draw our content doc.drawContents(painter)#,printer.pageRect().translated( -printer.pageRect().x(), -printer.pageRect().y() )) #QTextDocument.drawContents(QPainter, QRectF rect=QRectF()) doc.print_(printer) # Done. painter.end()
def renderPdf(self, fileName): p = QPrinter() p.setOutputFormat(QPrinter.PdfFormat) p.setOutputFileName(fileName) p.setResolution(pdf_dpi) paperSize = self.m_paperSize if not len(paperSize): pageSize = QSize(self.m_webPage.mainFrame().contentsSize()) paperSize['width'] = str(pageSize.width()) + 'px' paperSize['height'] = str(pageSize.height()) + 'px' paperSize['border'] = '0px' if paperSize.get('width') and paperSize.get('height'): sizePt = QSizeF(ceil(self.stringToPointSize(paperSize['width'])), ceil(self.stringToPointSize(paperSize['height']))) p.setPaperSize(sizePt, QPrinter.Point) elif 'format' in paperSize: orientation = QPrinter.Landscape if paperSize.get('orientation') and paperSize['orientation'].lower() == 'landscape' else QPrinter.Portrait orientation = QPrinter.Orientation(orientation) p.setOrientation(orientation) formats = { 'A0': QPrinter.A0, 'A1': QPrinter.A1, 'A2': QPrinter.A2, 'A3': QPrinter.A3, 'A4': QPrinter.A4, 'A5': QPrinter.A5, 'A6': QPrinter.A6, 'A7': QPrinter.A7, 'A8': QPrinter.A8, 'A9': QPrinter.A9, 'B0': QPrinter.B0, 'B1': QPrinter.B1, 'B2': QPrinter.B2, 'B3': QPrinter.B3, 'B4': QPrinter.B4, 'B5': QPrinter.B5, 'B6': QPrinter.B6, 'B7': QPrinter.B7, 'B8': QPrinter.B8, 'B9': QPrinter.B9, 'B10': QPrinter.B10, 'C5E': QPrinter.C5E, 'Comm10E': QPrinter.Comm10E, 'DLE': QPrinter.DLE, 'Executive': QPrinter.Executive, 'Folio': QPrinter.Folio, 'Ledger': QPrinter.Ledger, 'Legal': QPrinter.Legal, 'Letter': QPrinter.Letter, 'Tabloid': QPrinter.Tabloid } p.setPaperSize(QPrinter.A4) # fallback for format, size in formats.items(): if format.lower() == paperSize['format'].lower(): p.setPaperSize(size) break else: return False border = floor(self.stringToPointSize(paperSize['border'])) if paperSize.get('border') else 0 p.setPageMargins(border, border, border, border, QPrinter.Point) self.m_webPage.mainFrame().print_(p) return True
def save(self, imgName, w=None, h=None, header=None, \ dpi=150, take_region=False): ext = imgName.split(".")[-1].upper() root = self.startNode #aspect_ratio = root.fullRegion.height() / root.fullRegion.width() aspect_ratio = self.i_height / self.i_width # auto adjust size if w is None and h is None and (ext == "PDF" or ext == "PS"): w = dpi * 6.4 h = w * aspect_ratio if h>dpi * 11: h = dpi * 11 w = h / aspect_ratio elif w is None and h is None: w = self.i_width h = self.i_height elif h is None : h = w * aspect_ratio elif w is None: w = h / aspect_ratio if ext == "SVG": svg = QtSvg.QSvgGenerator() svg.setFileName(imgName) svg.setSize(QtCore.QSize(w, h)) svg.setViewBox(QtCore.QRect(0, 0, w, h)) #svg.setTitle("SVG Generator Example Drawing") #svg.setDescription("An SVG drawing created by the SVG Generator") pp = QtGui.QPainter() pp.begin(svg) targetRect = QtCore.QRectF(0, 0, w, h) self.render(pp, targetRect, self.sceneRect()) pp.end() elif ext == "PDF" or ext == "PS": format = QPrinter.PostScriptFormat if ext == "PS" else QPrinter.PdfFormat printer = QPrinter(QPrinter.HighResolution) printer.setResolution(dpi) printer.setOutputFormat(format) printer.setPageSize(QPrinter.A4) pageTopLeft = printer.pageRect().topLeft() paperTopLeft = printer.paperRect().topLeft() # For PS -> problems with margins # print paperTopLeft.x(), paperTopLeft.y() # print pageTopLeft.x(), pageTopLeft.y() # print printer.paperRect().height(), printer.pageRect().height() topleft = pageTopLeft - paperTopLeft printer.setFullPage(True); printer.setOutputFileName(imgName); pp = QtGui.QPainter(printer) if header: pp.setFont(QtGui.QFont("Verdana",12)) pp.drawText(topleft.x(),20, header) targetRect = QtCore.QRectF(topleft.x(), 20 + (topleft.y()*2), w, h) else: targetRect = QtCore.QRectF(topleft.x(), topleft.y()*2, w, h) if take_region: self.selector.setVisible(False) self.render(pp, targetRect, self.selector.rect()) self.selector.setVisible(True) else: self.render(pp, targetRect, self.sceneRect()) pp.end() return else: targetRect = QtCore.QRectF(0, 0, w, h) ii= QtGui.QImage(w, \ h, \ QtGui.QImage.Format_ARGB32) pp = QtGui.QPainter(ii) pp.setRenderHint(QtGui.QPainter.Antialiasing ) pp.setRenderHint(QtGui.QPainter.TextAntialiasing) pp.setRenderHint(QtGui.QPainter.SmoothPixmapTransform) if take_region: self.selector.setVisible(False) self.render(pp, targetRect, self.selector.rect()) self.selector.setVisible(True) else: self.render(pp, targetRect, self.sceneRect()) pp.end() ii.save(imgName)
class Printer(BasePrinter): FONT_NAME = 'Courrier' def __init__(self, *args, **kwargs): BasePrinter.__init__(self, *args, **kwargs) self.page_number = 0 self.printer = QPrinter(QPrinter.HighResolution) ## todo: remove-me self.printer.setOutputFileName("ufwi_log-page.pdf") self.printer.setOutputFormat(QPrinter.NativeFormat) #self.printer.setOrientation(QPrinter.Landscape) self.printer.setPaperSize(QPrinter.A4) self.printer.setResolution(100) def _init_painter(self): self.painter = QPainter(self.printer) self.painter.setRenderHint(QPainter.Antialiasing) self.painter.setBackgroundMode(Qt.OpaqueMode) self.painter.setBrush(Qt.white) self.painter.setFont(QFont(self.FONT_NAME, 9)) fillrect = QRect(0, 0, self.printer.pageRect().width(), self.printer.pageRect().height()) self.painter.fillRect(fillrect, self.painter.brush()) self.page_number = 1 self._draw_header() self._draw_footer() self.drawCentralTitle(self.title) if self.logo: self.painter.drawImage(QPoint(self.width() / 2 - self.logo.width() / 2, self.height() / 2 + QFontMetrics(self.painter.font()).height() + self.height() / 4 - self.logo.height() / 2), self.logo) def _draw_header(self): if not self.header_enabled: return h = -self.headerHeight() self.drawText(QDateTime.currentDateTime().toString('yyyy-MM-dd hh:mm'), h, Qt.AlignLeft) h += self.drawText(self.interval_label, h, Qt.AlignRight) self.drawText(self.title, h, Qt.AlignLeft) self.drawText(self.enterprise, h, Qt.AlignRight) self.painter.drawLine(0, self.headerHeight() - 1, self.printer.pageRect().width(), self.headerHeight() - 1) def _draw_footer(self): if not self.footer_enabled: return self.painter.drawLine(10, self.printer.pageRect().height() - self.footerHeight(), self.printer.pageRect().width() - 10, self.printer.pageRect().height() - self.footerHeight()) h = self.height() + 1 #self.drawText('topleft', h, Qt.AlignLeft) h += self.drawText(u'© 2008-2010 EdenWall', h, Qt.AlignRight, size=9) self.drawText(unicode(self.page_number), h, Qt.AlignHCenter) #self.drawText('bottomright', h, Qt.AlignRight) def headerHeight(self): if self.header_enabled: return 40 else: return 0 def footerHeight(self): if self.footer_enabled: return 40 else: return 0 def height(self): return self.printer.pageRect().height() - self.headerHeight() - self.footerHeight() def width(self): return self.printer.pageRect().width() def showDialog(self, parent): dialog = QPrintDialog(self.printer, parent) if dialog.exec_() != QPrintDialog.Accepted: return False self._init_painter() return True def end(self): self.painter.end() def newPage(self): self.printer.newPage() self.page_number += 1 self._draw_header() self._draw_footer() def drawCentralTitle(self, text): self.painter.setBackgroundMode(Qt.TransparentMode) f = QFont(self.FONT_NAME, 22) f.setWeight(QFont.Bold) self.painter.setFont(f) height = QFontMetrics(self.painter.font()).height() self.painter.drawText(QRect(0, self.printer.pageRect().height() * 0.5, self.printer.pageRect().width(), height), Qt.AlignHCenter | Qt.AlignVCenter, text) self.painter.setFont(QFont(self.FONT_NAME, 10)) def drawHCenteredTitle(self, text, vpos): self.painter.setBackgroundMode(Qt.TransparentMode) self.painter.setFont(QFont(self.FONT_NAME, 18)) height = QFontMetrics(self.painter.font()).height() self.painter.drawText(QRect(0, self.headerHeight() + vpos, self.printer.pageRect().width(), height), Qt.AlignHCenter | Qt.AlignVCenter, text) self.painter.setFont(QFont(self.FONT_NAME, 10)) return height def drawText(self, text, vpos, halign=Qt.AlignLeft, size=10, width=None): self.painter.setBackgroundMode(Qt.TransparentMode) self.painter.setFont(QFont(self.FONT_NAME, size)) height = QFontMetrics(self.painter.font()).height() if width is None: width = self.printer.pageRect().width() self.painter.drawText(QRect(0, self.headerHeight() + vpos, width, height), halign | Qt.AlignVCenter, text) return height def drawFragment(self, frag_widget, vpos, len_frags): # Display it on half the page scale = 1 single_frag = False if frag_widget.pos == len_frags - 1 and frag_widget.pos % 2 == 0: scale = 2 single_frag = True y = self.headerHeight() + vpos width = self.printer.pageRect().width() * 0.8 * scale height = self.printer.pageRect().height() * 0.5 * 0.8 x = self.printer.pageRect().width() * 0.1 if single_frag: if frag_widget.view.__class__.__name__ != "TreeFragmentView": x = -(width - self.printer.pageRect().width()) / 2. else: width = width / 2. rect = QRect(x, y, width, height) # Temporary remove stylesheet to avoid to print background. stylesheet_save = frag_widget.styleSheet() frag_widget.setStyleSheet('') frag_widget.getView().printMe(self.painter, rect) frag_widget.setStyleSheet(stylesheet_save)