El día 16 de diciembre de 2010 13:26, Francesc Alted <fal...@pytables.org> escribió: > A Thursday 16 December 2010 12:26:48 Alberto Curro escrigué: >> Hola a todos, >> >> Antes de todo, disculpad por el tocho, pero creo que esto puede ser >> de interés... >> >> Allá por el 2005 tenía una pequeña consultora freelance con un >> compañero, y por necesidades de algunos clientes decidimos diseñar >> una herramienta de generación e impresión de informes. Fue nuestro >> primer desarrollo en este lenguaje (de hecho aprendimos python con >> ella :)), para python 2.3, creo recordar, y dadas esas >> circunstancias, como comprendereis, la calidad y limpieza del código >> ni su diseño no eran ninguna maravilla :) > > Vaya, que casualidad. Justamente otro compañero y yo hicimos > básicamente lo mismo, pero en el 2008 :) > >> La estuve manteniendo, depurando cosillas y mejoras hasta >> aproximadamente principios del 2007, que se abandonó porque estos >> clientes implementaron otro software que ya traía su propio gestor >> de informes; por simple tema de falta de tiempo, y pese a que la >> solución tenía muchísimas posibilidades, la abandoné y ha quedado >> almacenada en mi SVN todo este tiempo, hasta hace un par de semanas >> que, haciendo limpieza de mis servidores personales, me encontré el >> código, y como creo que tiene muchas posibilidades con un poco de >> trabajo en ella, he hablado con mi antiguo compañero para publicarlo >> como GPL, con él como coautor, claro, y no ha puesto mayor problema >> al respecto. >> >> Me surgen entonces las siguientes dudas: >> >> - Licencia: ¿qué problemas pueden surgir? Estoy desconectado desde >> hace un tiempo del mundillo del software libre, y ya no me acuerdo >> si alguno de los módulos usados (4Suite, Reportlab) podría afectar >> en la publicación de la solución en GPL. > > Nosotros elegimos GPL ya que dependiamos de una libreria GPL (creo que > era pyinotify). Mi consejo es que, debido a la naturaleza viral de GPL > la evites si puedes (BSD o MIT van muy bien: sencillas y no pretenden > imponer la libertad). Sin embargo, hay que decir que mucha gente se > siente a gusto con la GPL y la elige a propósito (no es mi caso). > >> - Tecnología: ¿hay soluciones mejores, o más eficientes, para el >> procesamiento de los XML, XSLT, o mejores que reportlab? > > Hombre, hay infinitas :-) Nosotros por ejemplo no usamos XML para nada. > Nos inventamos nuestro propio sistema de plantillas para generar los > PDFs a partir de ficheros texto y un fichero de control (o formato) > parecido a: > > [task] > doctype = Factura amb copia > input_encoding = cp850 > output_name = Factura #123 > ncopies = 2 > host = dept-comptabilitat > barcode = 123a20080619 > > [copy] > dir = /el/meu/directori > > [email] > from = pdflisti...@exemple.com > to = p...@ferrer.es > subject = Factura #123 > bcc = factu...@exemple.com > > Por supuesto, se podian definir plantillas en PDF que se superinponian > al listado definitivo. Como ves, no hay XML, así que va como un tiro. > >> - Repositorio: ¿qué forja debería usar para publicarlo? > > No infinitas, pero muchas, así que tendrás que elegir una. Yo > últimamente me he decantado por github.com (aunque eso te obliga a usar > git como controlador de versiones). > >> A nivel técnico, el programa habría que revisarlo, dándole >> posibilidades en cuanto a parámetros de entrada, posibles salidas, >> una buena refactorización y puesta al día del código (os recuerdo >> que fue nuestro primer software python, aprendimos python con él...) >> etc., dado que ahora mismo lo que hace es un proceso de 1 única vía: >> coge xml -> transforma XSL -> genera RML -> convierte con reportlab >> -> almacena / imprime. > > Aparte de esto, el nuestro también envia por e-mail y fax (aparte de > otros posibles métodos definidos por el usuario). > >> La solución en sí es muy sencilla: coge un fichero XML con datos, >> lo procesa mediante XSLT, genera un documento RML y lo procesa con >> Reportlab para generar el PDF final (y enviarlo a impresora o >> guardarlo). Aparte de reportlab, se usaba 4Suite para el procesado >> de XML, el motor XSLT y, por supuesto, Reportlab. >> >> Sin embargo, a nivel características era muy potente gracias a >> Reportlab: se podían generar auténticas "virguerías" a nivel de >> informes, con la complejidad que se requiriese; sólo deciros que >> fuimos capaces de conseguir generar, punto por punto, línea por >> línea, imagen por imagen, todos los tipos de informes usados por 3 >> empresas de distintos tamaños (hablamos de facturas, informes >> internos, albaranes, etiquetado para logística, etc.) eliminando el >> uso de los formularios pre-impresos que venían usando, sin que se >> notase el cambio. > > Ahi el nuestro no es tan flexible. Simplemente se pasa texto a PDF > diciéndole el tamaño del papel y el número de filas y columnas que iban > a caber. Simple, pero efectivo. > >> Eso sí, el mayor problema (y donde se consumía el tiempo) era en la >> parte del diseño de las plantillas XSL y RML, que no habíamos >> escrito un software de diseño de las plantillas, y se hacía a mano >> :) Por otro lado, no era una maravilla en velocidad: un informe >> normal tardaba alrededor de 1-1.5 segundos en estar en pantalla, un >> informe muy largo (más de 20 páginas) o muy complejo... pues >> imaginaos. La parte más lenta era la de transformación XML/XSLT >> (incluido el parseo y validación del XML); después de esto iba >> bastante bien, aunque reportlab en aquel momento no eran tampoco la >> panacea en velocidad. > > Más lento parseando XML que el propio reportlab renderizando? Creo que > se me han ido las ganas de trabajar con XML de por vida :-) Recuerdo > claramente que nuestro cuello de botella era el reportlab, y se podian > alcanzar velocidades de varios informes (de entre 1 y 10 pags) por > segundo. > >> Bueno, creo que ya me he explayado bastante por ahora, para lo que >> eran unas simples preguntas; cualquier recomendación, consejo, >> interés en el proyecto, o preguntas, aquí me tenéis. No os cortéis >> :) > > Ya ves que compartimos sinergias :-) Nuestro paquete es libre, pero no > está disponible en la red básicamente por el coste de crear el > repositorio y hacer una página medio decente explicando el asunto > (cuesta bastante tiempo, y si nadie te lo subvenciona pues...). De > todas maneras, si quieres echarle un vistazo, puedes descargar el > paquete de: > > http://www.pytables.org/temporal/pdflistings-0.6.1.dev.tar.gz >
--> 403 Forbidden -- lm > Saludos, > > -- > Francesc Alted > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/