Pisa é um conversor de HTML/XHTML/CSS para PDF, escrito em Python e baseado nas bibliotecas Reportlab, PyPDF, TechGame Networks CSS e HTML5lib. Seu foco principal não é gerar páginas perfeitas para impressão, mas utilizar HTML e CSS para gerar PDFs dentro de aplicações.
A instalação pode ser feita através do código no site do projeto ou pelo comando easy_install pisa.
Crie um arquivo chamado report.py dentro do diretório do projeto contendo o código abaixo:
# -*- coding: utf-8 -*- from django import http from django.template.loader import get_template from django.template import Context import ho.pisa as pisa import cStringIO as StringIO import cgi, os def fetch_resources(uri, rel): path = '/path/para/diretorio/contendo/imagens/a/serem/exibidas' return path def write_to_pdf(template_src, context_dict, filename): template = get_template(template_src) context = Context(context_dict) html = template.render(context) result = StringIO.StringIO() pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result, link_callback=fetch_resources) if not pdf.err: response = http.HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=%s.pdf' % filename response.write(result.getvalue()) return response return http.HttpResponse('Problema ao gerar PDF: %s' % cgi.escape(html))
E agora, dentro de uma view, é preciso importar o arquivo report.py e chamar a função write_to_pdf para fazer a conversão:
# views.py from report import write_to_pdf def listar_clientes_cadastrados(request): clientes = Cliente.objects.all() return write_to_pdf('relatorio.html', {'clientes': clientes}, 'nome_do_arquivo_pdf')
A função write_to_pdf recebe como parâmetro o nome do arquivo HTML que será convertido, as variáveis que serão tratadas dentro desse arquivo e o nome que o arquivo PDF sem a extensão. Retorna o download do arquivo PDF.
Conforme citado no início do post, a conversão não é perfeita. Por exemplo, às vezes uma tabela apresenta mínimas deformações, não fica igual como na versão HTML. Apesar disso Pisa é uma ótima solução que muitas vezes ajuda bastante e, como puderam ver, é muito fácil de usar.















Posted in
Tags: 
Post bastante interessante, vou precisar disso em breve
.
)
Tu tem twitter? Gostaria de seguir para saber quando há novos posts (ñ acho RSS muito prático