Relatórios HTML/PDF com python

3,254 views
Skip to first unread message

Artur Felipe Sousa

unread,
Feb 9, 2012, 1:29:49 PM2/9/12
to python-brasil
Boa tarde pythonistas!

Gostaria de saber se vocês já usaram alguma ferramenta legal pra gerar
relatórios HTML/PDF com o python. Sempre sofro a necessidade de gerar
relotórios e toda vez tenho que criar uma página diferente em HTML
para apresentá-los de uma forma mais "PRINTÁVEL". Achei diversas libs
que transformam HTML em PDF (até com suporte a CSS) em python, mas
ainda não testei nenhuma. Tive péssimas experiências em PHP com isso
pois a maioria das soluções para gerar PDF a partir do HTML
praticamente não funcionava com um volume grande de informações e as
outras ofereciam uma API muito complexa para gerar o PDF diretamente
como por exemplo:

$pdf->Cell(40,10,'Hello World !',1);

Alguma idéia?

Desde já agradeço...

Bruno Rocha

unread,
Feb 9, 2012, 1:37:34 PM2/9/12
to python...@googlegroups.com
Conheço alguns

http://code.google.com/p/pyfpdf/ ( prefiro este!)

http://www.geraldoreports.org/

http://appyframework.org/pod.html

http://pypi.python.org/pypi/pisa/3.0.27

http://www.htmltopdf.org/

2012/2/9 Artur Felipe Sousa <arturfel...@gmail.com>

--
------------------------------------
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



--

Christian S. Perone

unread,
Feb 9, 2012, 1:42:44 PM2/9/12
to python...@googlegroups.com
A maneira mais adequada de fazer isto (assumindo que você não precise realmente de um PDF), é usando HTML e criando um CSS em separado somente para impressão (media="print").

--
------------------------------------
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



--
"Forgive, O Lord, my little jokes on Thee, and I'll forgive Thy great big joke on me."
http://pyevolve.sourceforge.net/wordpress/

Bruno Rocha

unread,
Feb 9, 2012, 1:54:23 PM2/9/12
to python...@googlegroups.com
Olha um exemplo com PyFPDF

http://code.google.com/p/pyfpdf/wiki/WriteHTML

html = """
<H1 align="
center">html2fpdf</H1>
<h2>Basic usage</h2>
<p>You can now easily print text mixing different
styles : <B>bold</B>, <I>italic</I>, <U>underlined</U>, or
<B><I><U>all at once</U></I></B>!<BR>You can also insert links
on text, such as <A HREF="
http://www.fpdf.org">www.fpdf.org</A>,
or on an image: click on the logo.<br>
..........
"""

from pyfpdf import FPDF, HTMLMixin

class MyFPDF(FPDF, HTMLMixin):
    pass
                   
pdf=MyFPDF()
#First page
pdf.add_page()
pdf.write_html(html)
pdf.output('html.pdf','F')


2012/2/9 Artur Felipe Sousa <arturfel...@gmail.com>
Boa tarde pythonistas!
--
------------------------------------
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



--

Artur Felipe Sousa

unread,
Feb 9, 2012, 2:02:03 PM2/9/12
to python-brasil
Opa Bruno, valeu mesmo cara.

Era dessa mesmo que estava me referindo quando falei do PHP. Eu achei
muito ruim
definir o posicionamento de tudo usando coordenadas e outras coisas
mais loucas.

Eu achava que usando um template HTML simples, sem muita frescurada,
desse para gerar um PDF tranquilamente.

Quando eu teste esta com o PHP, se o arquivo ficasse muito grande o
programa travava, vou testar agora com o PyFPDF pra ver se funciona
legal.

Você usa ele no MOVUCA?

On 9 fev, 16:54, Bruno Rocha <rochacbr...@gmail.com> wrote:
> Olha um exemplo com PyFPDF
>
> http://code.google.com/p/pyfpdf/wiki/WriteHTML
>
> html = """
>
> <H1 align="center">html2fpdf</H1>
> <h2>Basic usage</h2>
> <p>You can now easily print text mixing different
> styles : <B>bold</B>, <I>italic</I>, <U>underlined</U>, or
>
> <B><I><U>all at once</U></I></B>!<BR>You can also insert links
> on text, such as <A HREF="http://www.fpdf.org">www.fpdf.org</A>,
> or on an image: click on the logo.<br>
> ..........
> """
>
> from pyfpdf import FPDF, HTMLMixin
>
> class MyFPDF(FPDF, HTMLMixin):
>     pass
>
> pdf=MyFPDF()
> #First page
> pdf.add_page()
> pdf.write_html(html)
> pdf.output('html.pdf','F')
>
> 2012/2/9 Artur Felipe Sousa <arturfelipe.so...@gmail.com>

Artur Felipe Sousa

unread,
Feb 9, 2012, 2:05:23 PM2/9/12
to python-brasil
Pois é, também uso bastante isso.

Mas eu queria alguma coisa que eu pudesse gerar um PDF. Acho que dar
esta opção para o usuário é muito legal.
Se o cara por exemplo não quiser imprimir naquele momento ou até mesmo
fazer backup ele guarda em PDF.

Obrigado pela idéia cara...

On 9 fev, 16:42, "Christian S. Perone" <christian.per...@gmail.com>
wrote:
> *"Forgive, O Lord, my little jokes on Thee, and I'll forgive Thy great big
> joke on me."*http://pyevolve.sourceforge.net/wordpress/

Bruno Rocha

unread,
Feb 9, 2012, 2:05:41 PM2/9/12
to python...@googlegroups.com
Você usa ele no MOVUCA?

Estou implementando uma solução usando o PyFPDF para o botão de print das receitas[1]

[1] http://movu.ca/demo/article/show/14/avocado-tomato-chirashi-sushi

Artur Felipe Sousa

unread,
Feb 9, 2012, 2:08:37 PM2/9/12
to python-brasil
Isso, mesma aplicação no meu caso.

Leonardo Santagada

unread,
Feb 14, 2012, 10:47:54 AM2/14/12
to python...@googlegroups.com
2012/2/9 Artur Felipe Sousa <arturfel...@gmail.com>:

> Se o cara por exemplo não quiser imprimir naquele momento ou até mesmo
> fazer backup ele guarda em PDF.

Uma vantagem do mac é que em qualquer lugar onde aparece um dialogo
para impressão tu pode mandar salvar em pdf, e tem té alguns botões
para automaticamente guardar numa pasta ou atachar num email... O
chrome já esta fazendo isso também em todas as plataformas, só falta o
firefox agora.

Sobre o pypdf, como ele converte o html em pdf? Acredito que quase
todos esses fazem um parsing manual de html e façam um render próprio
também o que eu acho que é fadado a dar problema. Algo como
http://code.google.com/p/wkhtmltopdf/ parece uma alternativa melhor,
mas melhor ainda se fosse só o webkit.

Tem um projeto bem avançado de usar o webkit como uma biblioteca que é
o http://www.phantomjs.org/ estender ele para suportar impressão em
pdf seria o ideal, porque a comunidade é grande.


--

Leonardo Santagada

Luciano Ramalho

unread,
Feb 14, 2012, 10:57:29 AM2/14/12
to python...@googlegroups.com
2012/2/14 Leonardo Santagada <sant...@gmail.com>:

> 2012/2/9 Artur Felipe Sousa <arturfel...@gmail.com>:
>> Se o cara por exemplo não quiser imprimir naquele momento ou até mesmo
>> fazer backup ele guarda em PDF.
>
> Uma vantagem do mac é que em qualquer lugar onde aparece um dialogo
> para impressão tu pode mandar salvar em pdf,

Santagada, no Ubuntu Linux também existe essa opção há anos: basta
escolher "imprimir para arquivo", e escolher entre .PDF e .PS
(PostScript). Imagino que todo Linux que usa Gnome tem isso, e aposto
que os baseados em KDE também tem.

Só no Windows essa opção não vem integrada.

[ ]s
Luciano


--
Luciano Ramalho
Twitter: @luciano
Autor e instrutor da Academia Python na Globalcode
http://python.globalcode.com.br

Leonardo Santagada

unread,
Feb 15, 2012, 12:28:10 PM2/15/12
to python...@googlegroups.com
2012/2/14 Luciano Ramalho <luc...@ramalho.org>:

> 2012/2/14 Leonardo Santagada <sant...@gmail.com>:
>> 2012/2/9 Artur Felipe Sousa <arturfel...@gmail.com>:
>>> Se o cara por exemplo não quiser imprimir naquele momento ou até mesmo
>>> fazer backup ele guarda em PDF.
>>
>> Uma vantagem do mac é que em qualquer lugar onde aparece um dialogo
>> para impressão tu pode mandar salvar em pdf,
>
> Santagada, no Ubuntu Linux também existe essa opção há anos: basta
> escolher "imprimir para arquivo", e escolher entre .PDF e .PS
> (PostScript). Imagino que todo Linux que usa Gnome tem isso, e aposto
> que os baseados em KDE também tem.

Achei q não tinha pdf (ou não tinha a ultima vez que eu olhei). O
windows também salva num formato tipo ps que só deus sabe se vai abrir
direito em outra maquina :).

--

Leonardo Santagada

Artur Felipe Sousa

unread,
Feb 16, 2012, 8:56:12 AM2/16/12
to python-brasil
Leonardo e Luciano, obrigado pelas respostas. Também utilizo o mac e
já tinha visto isso no chrome, o problema é que na empresa onde
trabalho todos usam windows :/.

Para resolver então instalei o doPDF e o PDFill que simulam o mesmo
comportamento, porém quando o relatório fica muito grande (227
páginas) ele dá um erro e não gera completamente.

> também o que eu acho que é fadado a dar problema. Algo como
> http://code.google.com/p/wkhtmltopdf/ parece uma alternativa melhor,
> mas melhor ainda se fosse só o webkit.

Vou dar uma olhada nesse wkhtmltopdf e retorno com alguma novidade.

[]s

Reply all
Reply to author
Forward
0 new messages