Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 15, 2015 18:34:58

a.medveditskov
Зарегистрирован: 2015-02-15
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Как на принтере напечатать ""Hello, World!"

Прошу помощи, перечитал самые крутые учебники, а как напечатать на принтере простую фразу - так и не понял…

Офлайн

#2 Фев. 15, 2015 19:40:49

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Как на принтере напечатать ""Hello, World!"

For Unix (Old school):

import os
import tempfile
  
temp = tempfile.mktemp(dir='/tmp')
with open(temp, 'w') as printer:
    printer.write('Hello World')
  
_ = os.system(`lpr {}`.format(temp))
os.unlink(temp)

Для современных Unix всё несколько проще, можно просто дернуть CUPS.
А вообще из всего существующего самые лучшие результаты дает QPrinter из Qt, печатает pdf, ps и html. Т.е. сформировал html и отправил на печать. К тому же кроссплатформенный.

#!/usr/bin/env python
# -*- coding: utf8 -*-
import sys
from PyQt4 import QtGui, QtWebKit
 
class Printer(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.setWindowTitle('Sample Printer')
        self.setMinimumSize(100, 100)
        self.print_button = QtGui.QPushButton('Print')
        self.close_button = QtGui.QPushButton('Close')
        self.layer = QtGui.QHBoxLayout(self)
        self.layer.addWidget(self.print_button, 0)
        self.layer.addWidget(self.close_button, 1)
        self.html = QtWebKit.QWebView()
        self.html.setHtml("<h1>Hello World</h1>")
        self.print_button.clicked.connect(self.printer)
        self.close_button.clicked.connect(self.close)
  
    def printer(self):
        self.qprinter = QtGui.QPrinter(QtGui.QPrinter.HighResolution)
        self.qprinter.setPageSize(QtGui.QPrinter.A4)
        self.qprinter.setOrientation(QtGui.QPrinter.Landscape)
        self.dialog = QtGui.QPrintPreviewDialog(self.qprinter)
        self.dialog.paintRequested.connect(self.print_preview)
        self.dialog.exec_()
  
    def print_preview(self):
        self.html.print_(self.qprinter)
  
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    p = Printer()
    p.show()
    sys.exit(app.exec_())

Офлайн

#3 Фев. 15, 2015 21:04:50

a.medveditskov
Зарегистрирован: 2015-02-15
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Как на принтере напечатать ""Hello, World!"

Спасибо за совет. Сижу под Виндой, но надеюсь, что QPrinter - поможет…

Офлайн

#4 Фев. 16, 2015 06:24:37

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Как на принтере напечатать ""Hello, World!"

a.medveditskov
Сижу под Виндой, но надеюсь, что QPrinter - поможет…

Проверил пример на Windows работает ровно так же как и на Mac OS X и на Linux.

Офлайн

#5 Фев. 20, 2015 03:44:17

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Как на принтере напечатать ""Hello, World!"

Лучше и качественней, конечно, собрать файл odf или xls. А печать переложить на плечи пользователя. Много раз сталкивался, что разные принтеры дружить вообще не хотят и единого стандарта по-поводу печати никто не выработал

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version