[pyar] Imprimir factura
Julio César Gázquez
julio_lists en mebamutual.com.ar
Jue Nov 22 10:08:18 ART 2012
El 21/11/12 18:55, Fernando Gonzalez escribió:
> Hola a todos estoy codificando en python + pyqt4 + sqlite3 un pequeño
> sistema comercial, ahora necesito imprimir los comprobantes de venta o
> remitos, ordenes de pago, etc. Estuve viendo el reportlab, pero genera
> pdf y es un poco molesto abrir el pdf, e imprimirlo manualmente, en
> visual basic esta el objeto printer que me permite imprimir reportes
> directamente, estuve viendo el qprinter pero no encontre ningún
> ejemplo mas o menos claro (para dumys:), en python no hay algo parecido?
>
> desde ya muchas gracias
>
Hola Fernando.
Mi ideal al respecto es usar python-poppler-qt4.
Lamentablemente al ser un binding bastante chico e independiente de
PyQt4 (si un día Qt incorpora Poppler de forma que termine siendo
soportado directamente por PyQt y PySide bailo en una pata) siempre tuvo
varias personas manteniendo copias independientes (entre ellas Roberto
Alsina). Pero hace un tiempo un flaco tomó la posta de mantenerlo más
seriamente (no digo que lo haya cumplido):
http://code.google.com/p/python-poppler-qt4/
En cuanto al soporte Windows, hay por lo menos un instalador para Windows:
https://home.in.tum.de/~lorenzph/python-poppler-qt4/
A continuación mi código para imprimir. Tengo hecho también un form de
vista en pantalla, si te sirve te lo paso.
from PyQt4 import QtGui
try:
import QtPoppler
except ImportError:
try:
import popplerqt4 # Nombre alternativo del módulo
QtPoppler = popplerqt4
except ImportError:
pass
def printpdf(reportfile,printer):
#dpi=printer.resolution()
#print dpi
#if dpi>300:
dpi=300
printer.setResolution(300)
doc = QtPoppler.Poppler.Document.load(reportfile)
painter = QtGui.QPainter()
painter.begin(printer)
progress=QtGui.QProgressDialog (u"Imprimiendo...", u"Cancelar",
0, doc.numPages())
progress.open()
try:
for i in range(0,doc.numPages()):
if i>0: printer.newPage()
page = doc.page(i)
painter.drawImage(0, 0, page.renderToImage(dpi,dpi))
del page
progress.setValue(i)
painter.end()
except:
printer.abort()
raise
Saludos!
More information about the pyar
mailing list