Dúvida -> Impressão de texto em impressora no Windows

353 views
Skip to first unread message

Elder Trevisan

unread,
Oct 24, 2014, 12:04:55 PM10/24/14
to python...@googlegroups.com
Olá pessoal!
Estou desenvolvendo uma aplicação e preciso imprimir textos em uma impressora.
Estou usando: Python versão 3.3, GUI PySide, BD SQlite3, S.O. Windows.
Segue abaixo um exemplo bem simples que como estou fazendo:

qtd: 1
produto = "qualquerCoisa"
preco = 10
f = '------------------------\n'\
     'CUPOM FISCAL\n'\
     '------------------------\n'\
     'QUANTIDADE: %i\n'\
     'PRODUTO: %s\n'\
     'PREÇO: %i\n'\
     '------------------------\n'\
     '---------FIM----------'
Aí o problema que estou tendo é que preciso imprimir a variável f em uma impressora. Até o momento consegui fazer usando win32print, e pra testar estou imprimindo em PDF, porém algumas letras estão 'atropelando' outras. A questão de se usar esse módulo é o problema para achar material, tutoriais e exemplos na internet.
Segue abaixo o link de como estou fazendo com o win32print:
http://pastebin.com/JG5kLe3P

Desde já agradeço!

Elder Trevisan

unread,
Oct 29, 2014, 8:39:24 PM10/29/14
to python...@googlegroups.com
 Galera, com muito sacrificio, achei duas soluções, uma usando o próprio PySide e o outro usando o módulo Win32print.
Segue os códigos de cada um que eu fiz:
==> PySide:

b="Fulano"
n=10
doc = '---------------------------\n'\
'CUPOM FISCAL\n'\
'Nome: %s\n'\
'Valor pago: %i\n'\
'--------------------------------'%(b,n)
printer = QtGui.QPrinter()
printer.setResolution(300) #dpi
printer.setPageMargins(5, 5, 5, 5, printer.Millimeter) #left, top, right, bottom, unit
sizePage = QtCore.QSizeF(50, 50) #w,h
printer.setPaperSize(sizePage, printer.Millimeter) #ou Point, Inch, DevicePixel...
printer.setFullPage(True)
printer.setDocName("parkSYS_"+str(nv))
painter = QtGui.QPainter()
painter.begin(printer)
painter.setFont(QtGui.QFont("Verdana", 12))
painter.drawText(0, 0, 10000, 10000, QtCore.Qt.AlignLeft, doc) #x, y, w, h, flags, text
painter.end()

==> Win32print:
import win32ui
import win32print
import win32con
b="Fulano"
n=10
doc = '---------------------------\n'\
'CUPOM FISCAL\n'\
'Nome: %s\n'\
'Valor pago: %i\n'\
'--------------------------------'%(b,n)
hDC = win32ui.CreateDC()
hDC.CreatePrinterDC(win32print.GetDefaultPrinter())
hDC.StartDoc("parkSYS")
hDC.StartPage()
hDC.SetMapMode(win32con.MM_TWIPS)
# draws text within a box (assume about 1400 dots per inch for typical HP printer)
ulc_x = 1000 # give a left margin
ulc_y = -1000 # give a top margin
lrc_x = 11500 # width of text area-margin, close to right edge of page
lrc_y = -15000 # height of text area-margin, close to bottom of the page
hDC.DrawText(doc, (ulc_x, ulc_y, lrc_x, lrc_y), win32con.DT_LEFT)
hDC.EndPage()
hDC.EndDoc()

Marcos Thomaz

unread,
Oct 30, 2014, 2:08:18 AM10/30/14
to python...@googlegroups.com
Enviar os dados diretamente para a porta da impressora não funciona?

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--


Marcos Thomaz da Silva
Analista de Tecnologia da Informação
Reply all
Reply to author
Forward
0 new messages