Closed jdahlin closed 10 years ago
Sinceramente eu prefiro usar o reportlab direto.
O que seria legal seria fazer um output do boleto em html além de pdf. Assim o usuário poderia escolher se quer usar html ou se quer usar pdf.
Criar uma classe BoletoHTML
com a mesma interface da classe BoletoPDF
, essa era minha idéia original mas acabei nunca indo pra frente.
Se ele quiser usar output em html e depois usar o xhtml2pdf eh escolha dele.
Eu tentei começar a fazer um renderer em HTML puro. Assim o usuário teria a opção de usar HTML ou pdf. E no python3 o usuário poderia usar o pyboleto com impressão em HTML enquanto o reportlab/PIL não migram. Mas dei uma travada pra montar a tabela. Você tem algum modelo de boleto em HTML pra eu copiar e transformar num layout?
Eu dei uma olhada no do boletophp mas o código HMTL que eles usam no boleto é horrível. Prefiro adiar pra fazer direito.
Mas ele não é software livre, deve existir um outro melhor, tem projetos em java/php/c#
Para codigo de barra: http://zanstra.com/my/Barcode.html
Não serve pq não implementa o tipo de barcode que o pyboleto precisa "Interleaved 2 of 5" (aka I2of5). Segundo pq eh uma biblioteca Javascript. O boleto em HTML precisa ser estático para ser possível enviar por email por exemplo.
Mas o código de barras é o menor dos problemas. Fácil de fazer com CSS ou até usando 2 iagens, 1 pexel preto e outro pixel branco.
Posso tentar ajudar vocês também! Então como seria? Criar uma classe BoletoHTML dentro do modulo html.py no mesmo nível de pdf.py que implemente métodos semelhantes? Vocês pensam em usar alguma template engine pra isso (jinja, genshi) ou vai ser a montagem direta mesmo? Quanto ao código de barra em css achei legal a idéia, dá pra fazer uma coisa muito bem pensada.
Sim seria criar pyboleto/html.py e fazer mesma coisa do que ele faz, com preferencia com mesmo api para poder trocar entre os dois. Eu acho que não precisa jinja/genshi, por que o html vai ser bem pequeno, acredito que seria melhor montar direto para evitar mas dependências. Mas se você está realmente mais produtivo com templates usa eles e gente vê. Sim, CSS seria melhor do que Javascript e imagens, você vai ter todos os dados no mesmo arquivo, menos o logotipo do banco, mas aí não sei se tem como "embutir" sem usar javascript.
Você pode codificar a imagem em base64 para embutir no arquivo. Mas acho que não precisa se preocupar com isso por agora. Tenta apenas gerar um arquivo em HTML com uma código limpo e com a mesma API do pyboleto.pdf
. Quanto ao template engine eu concordo com o @jdahlin que quanto menos dependência melhor. Mas se você quiser pra começar usar algum usa o jinja.
Beleza então. Eu acho melhor também deixar o mais independente possível. Vou trabalhar nisso e mando uma pull pra vocês avaliarem ok?
Beleza
Massa!
Fiz a implementação do código de Barra usando o base64;
Closing because it was abandoned. I will be happy to merge a html output extension in the future if someone wants to work in this
xhtml2pdf (http://pypi.python.org/pypi/xhtml2pdf/) é uma biblioteca que utiliza reportlab mas permite você escrever relatórios usando xhtml e css. Com isso seria bem mais fácil modificar o layout, espacamento etc.