[Python-es] Como Implementar Python y JasperReport.
Mario R. Osorio
nimbiotics en gmail.com
Lun Dic 4 09:22:14 EST 2017
Buen dia Roberto,
Claro que tiene que salirse. El llamado para abrir el archivo PDF (que por
cierto, veo que lo estas abriendo de 3 maneras diferentes cuando solo
necesitas una) es asíncrono (NO bloqueador), por lo cual la ejecución de tu
programa NO se detiene y continua hasta el fin del archivo por lo cual se
termina incluso muy seguramente antes de que el archivo PDF haya sido
abierto.
El estilo lo eliges tu, pero tienes que poner tu codigo en un loop para que
no se salga sino hasta que tu asi lo desees. (while?)
*POR CIERTO, AL ESCRIBIR TU ULTIMO MENSAJE EXPUSISTE LA CONTRASEÑA DEL
ADMINISTRADOR DE TU BASE DE DATOS, por lo que te recomiendo altamente que
la cambies inmediatamente.*
Dtb/Gby
=======
Mario R. Osorio
A.S. of Computer Programming and Analysis
Web page: *http;//mario.osorio.solutions
<http://http%3B//mario.osorio.solutions>*
Email: *mario en osorio.solutions* <mario en osorio.solutions>
*Just Choose Python!* <http://www.gentoogeek.org/files/choose_python.pdf>
“If I had asked people what they wanted, they would have said faster
horses.”
― Henry Ford
<http://goo.gl/t2Hzgo>
<https://m.do.co/c/63e2415dab7b>
2017-12-04 1:29 GMT-05:00 Roberto Matarrita <rmatarria en gmail.com>:
> Buenas noches Don Mario. Disculpe que le moleste, tengo un problema con
> respecto al código para levantar el PDF. Todo lo hace casi perfecto, pero
> cuando ejecuto el reporte desde la forma, me lo levanta, pero me saca de la
> forma y tengo que volver a cargarla y ejecutar de nuevo el reporte. Es
> decir me levanta el browser, pero seguidamente desconecta la forma. Alguna
> Idea.
>
> Roberto.
>
> input_file = os.path.dirname(os.path.abspath(__file__)) + '/report4.jrxml'
> output = os.path.dirname(os.path.abspath(__file__)) + '/reportes'
> print(output)
> con = {
> 'driver': 'postgres',
> 'username': 'postgres',
> 'password': 'Administra8080',
> 'host': 'localhost',
> 'database': 'municipal',
> 'port':'5432'
> }
> x=input("Digite codigo de empleado :")
>
> #="8"
> jasper = JasperPy()
> jasper.process(input_file,output_file=output,format_list=["pdf"],
> parameters={'idenifica': (x)},db_connection=con)
> #os.remove(fname)
> #subprocess.Popen([file],shell=True)
>
> #webbrowser.open_new(r'file://C:\manteminiento\to\reportes.pdf')
> webbrowser.open_new(r'file://'+ output + '.pdf')
> os.startfile(filename)
> os.system(filename)
>
> Después del browser se sale de la forma.
>
> El 29 de noviembre de 2017, 18:23, Mario R. Osorio <nimbiotics en gmail.com>
> escribió:
>
>> Es para mi un placer poder ayudarte. Yo llevo varios años que no programo
>> en Python, pero es mi lenguage favorito. La funcion popen() esta contenida
>> en la libreria *subprocess*
>> <https://docs.python.org/3/library/subprocess.html>, asi que quizas solo
>> te falte importar esa libreria.
>>
>> Te recomiendo que pruebes las varias formas de abrir el(los) arcchivo(s)
>> ya que algunas podrian tener (d)efectos indeseados. *Tengo entendido* que
>> la forma mas *correcta* es utilizando popen(), Pero yo pienso que lo
>> *correcto*, a veces, esta en contraposicion a lo *desado*.
>>
>>
>> Dtb/Gby
>> =======
>> Mario R. Osorio
>> A.S. of Computer Programming and Analysis
>> Web page: *http;//mario.osorio.solutions
>> <http://http%3B//mario.osorio.solutions>*
>> Email: *mario en osorio.solutions* <mario en osorio.solutions>
>> *Just Choose Python!* <http://www.gentoogeek.org/files/choose_python.pdf>
>>
>> “If I had asked people what they wanted, they would have said faster
>> horses.”
>> ― Henry Ford
>>
>>
>>
>>
>> <http://goo.gl/t2Hzgo>
>> <https://m.do.co/c/63e2415dab7b>
>>
>> 2017-11-29 17:45 GMT-05:00 Roberto Matarrita <rmatarria en gmail.com>:
>>
>>> Don Mario, me funcionó el proceso, pude ver el reporte en la pantalla.
>>> Usted no sabe cuanto me ha costado hacer esto, llevo meses, buscando en
>>> Internet, documentación, gente que me dijera como podía hacer un reporte en
>>> python y realmente nadie me decía como hacerlos, a excepción de las
>>> herramientas que le mencioné.
>>>
>>> Gracias por ayudarme a dar el último paso que necesitaba para ver
>>> reportes en pantalla de una aplicación de escritorio. Ya los puedo tirar a
>>> PDF, Word,Excell,TXT y muchos otros formatos. Ahora es cuestión de afinarlo.
>>>
>>> 1. Una última consulta, usted como hace los reportes en python.
>>> 2. Que hace esta instrucción que me dio error y tuve que ponerla en
>>> comentario. subprocess.Popen([file],shell=True)
>>>
>>>
>>> Roberto.
>>>
>>> El 29 de noviembre de 2017, 10:38, Mario R. Osorio <nimbiotics en gmail.com
>>> > escribió:
>>>
>>>> Desconozco el producto JasperReport. Sin embargo, si ya tienes el
>>>> archivo PDF, solo te falta abrirlo, y hay varias formas de hacerlo; entre
>>>> ellas:
>>>>
>>>>
>>>> -
>>>> - subprocess.Popen([file],shell=True)
>>>> -
>>>>
>>>> import webbrowser
>>>> webbrowser.open_new(r'file://C:\path\to\file.pdf')
>>>>
>>>> -
>>>>
>>>> import os
>>>> os.startfile(filename)
>>>>
>>>> -
>>>>
>>>> os.system(filename)
>>>>
>>>> -
>>>>
>>>>
>>>>
>>>>
>>>> Tambien podrias hacer uso de varias librerias para manipulacion de
>>>> archivos PDF
>>>>
>>>>
>>>> Dtb/Gby
>>>> =======
>>>> Mario R. Osorio
>>>> A.S. of Computer Programming and Analysis
>>>> Web page: *http;//mario.osorio.solutions
>>>> <http://http%3B//mario.osorio.solutions>*
>>>> Email: *mario en osorio.solutions* <mario en osorio.solutions>
>>>> *Just Choose Python!*
>>>> <http://www.gentoogeek.org/files/choose_python.pdf>
>>>>
>>>> “If I had asked people what they wanted, they would have said faster
>>>> horses.”
>>>> ― Henry Ford
>>>>
>>>>
>>>>
>>>>
>>>> <http://goo.gl/t2Hzgo>
>>>> <https://m.do.co/c/63e2415dab7b>
>>>>
>>>> 2017-11-28 22:21 GMT-05:00 Roberto Matarrita <rmatarria en gmail.com>:
>>>>
>>>>> Buenas noches. Ya llevo varios meses tratando de aprender a realizar
>>>>> reportes en Python. He buscado reporteadores, documentación respecto al
>>>>> tema, pero al parecer es bastante escasa. Vi reportlab, pandas y otros,
>>>>> pero todos son para confeccionar a puro código. Observé un par de
>>>>> reporeteadores gráficos, entre ellos JasperReport, muy bueno y completo.
>>>>> Me enviaron el código que abajo describo, el cual logré que
>>>>> funcionara, se conecta a la base de datos, envía parámetros y hace el
>>>>> reporte.
>>>>> Pero tengo el gran problema que no he podido ya que desconozco como
>>>>> hacerlo y la persona que me envió el código, tampoco ha podido ayudarme y
>>>>> es como hacer para ver el reporte en pantalla. Es decir un preview.
>>>>>
>>>>> Es decir como hago para ver el reporte en la pantalla, para que el
>>>>> usuakrio escoja la impresora, o bien si lo va a enviar a un PDF, Word o
>>>>> Excel. Ya que el código lo que hace es grabar directamente el reporte al
>>>>> disco.
>>>>> Mucho agradecería la ayuda, o bien sujerencias para los reportes ya
>>>>> que estoy en un proyecto muy grande y este ha sido el talón de aquiles en
>>>>> Python, los reportes. Si alguien conoce del tema.
>>>>>
>>>>> Gracias.
>>>>>
>>>>> Describo el código.
>>>>>
>>>>> import sys
>>>>> import os
>>>>> import PyPDF2
>>>>> import pyjasper
>>>>> from platform import python_version
>>>>> from pyjasper.jasperpy import JasperPy
>>>>> from PyPDF2 import PdfFileMerger,PdfFileReader
>>>>>
>>>>> #def advanced_example_using_database():
>>>>> input_file = os.path.dirname(os.path.abspath(__file__)) +
>>>>> '/report4.jrxml'
>>>>> output = os.path.dirname(os.path.abspath(__file__)) + '/reportes'
>>>>> print(input_file)
>>>>> print(output)
>>>>>
>>>>> con = {
>>>>> 'driver': 'postgres',
>>>>> 'username': 'postgres',
>>>>> 'password': 'Administra8080',
>>>>> 'host': 'localhost',
>>>>> 'database': 'municipal',
>>>>> 'port':'5432'
>>>>> }
>>>>> x=input("Digite codigo de empleado :")
>>>>> jasper = JasperPy()
>>>>> jasper.process(input_file,output_file=output,format_list=["pdf"],
>>>>> parameters={'idenifica': (x)},db_connection=con) #Aquí se confecciona el
>>>>> reporte.
>>>>>
>>>>> _______________________________________________
>>>>> Python-es mailing list
>>>>> Python-es en python.org
>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>>
>>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20171204/32dfa2b5/attachment.html>
Más información sobre la lista de distribución Python-es