[pyar] Duda y problemas con web2py + fpdf. fpdf encuentra el tag TD pero despues dice que es NoneType

Mariano Reingart reingart en gmail.com
Mar Ene 22 12:05:57 ART 2013


2013/1/22 Leonardo M. Rocha <leo.m.rocha en gmail.com>:
> Hola!
>
>
> Al grano: estoy haciendo la generacion de PDFs de un sitio que genera
> tarjetas de negocio.
> Para generar los PDFs estoy utilizando (tratando, porque no he logrado
> nada util) fpdf integrado con web2py
> Las versiones que utilce son la estable y el ultimo clon de git
>
>
> He intentado varias cosas, primero con los templates de web2py +
> renderizado de html + fpdf
>
> Codigo:
> http://pastebin.com/7gnr3npQ
> http://pastebin.com/VxfKZCEW
>
> Error:
> http://pastebin.com/T1CKNHwP
>
> Como me canse de renegar me puse a hardcodear todo:
>
> http://pastebin.com/ARkVAqKn
> de nuevo, el html es renderizado bien en el browser, tambien si
> imprimo el html por consola y lo renderizo funciona bien. Pero ( y aca
> es donde no entiendo porque pasa)
> el siguiente error:
> http://pastebin.com/k88KiUqq
>
> Cuando solo renderizo una sola tarjeta (_card) se genera un PDF
> (horrible, no importa), pero cuando lo pongo en la tabla de tarjetas,
> para rellenar la pagina, lanza ese error.
>
> Alguna idea?
>

Hola Leo:

La generación de PDF con templates HTML es más que nada para armar
reportes simples (listados tabulares).
Los tags soportados son básicos y al menos los encabezados (TH, TD)
deben tener el ancho (width).
La idea es tener un diseño relativamente simple y fluido, por lo que
no se si es lo mejor para tu caso.

Para armar tarjetas y credenciales, una opción mejor sería las
Plantillas PDF, que están pensadas para diseños fijos y control de la
posición exácta de cada elemento:

https://code.google.com/p/pyfpdf/wiki/Templates

Puedes ver como ejemplo lo que usamos para las credenciales de PyCon
Argentina 2012 (por ej sample y build_badge_dict):

https://code.google.com/p/web2conf/source/browse/controllers/badge.py?name=pyconar2012#68

Para crear un diseño básico, debes especificar los campos y su
posición (para la etiqueta base):

https://code.google.com/p/web2conf/source/browse/controllers/aux.py?name=pyconar2012#132

Luego puedes copiar esa etiqueta base a lo largo y ancho de la hoja
(especificando cantidad de columnas, filas, separación, etc.):

https://code.google.com/p/web2conf/source/browse/controllers/aux.py?name=pyconar2012#170

Perdón todavía no tuve tiempo de emprolijar el código, cualquier cosa
avisame y te hago un ejemplo más actualizado, podes ver también la
aplicación que armamos para el libro de recetas de web2py:

https://github.com/mdipierro/web2py-recipes-source/blob/master/apps/10_Reporting_Recipes/web2py.app.pdf.w2p


Otra opción es usar PDFLabels, que ya trae incorporado los tamaños
básicos de etiquetas comerciales (Avery):

https://code.google.com/p/pyfpdf/source/browse/tools/pdflabels.py

Puedes ver un ejemplo en:

https://github.com/jredrejo/Labels-for-pyfpdf

Cualquier duda avisame y lo vemos

Sds

Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com



More information about the pyar mailing list