2009-10-21 22 views
16

Estoy buscando una solución de Python pura (para GAE) para convertir páginas web a PDF.Solución de python puro para convertir XHTML a PDF

Eché un vistazo a reportlab pero la documentación se enfoca en generar pdfs desde cero, en lugar de convertir desde HTML.

¿Qué me recomiendas? - pisa?

Edit: Mi caso de uso es Tengo un informe HTML que quiero poner a disposición en PDF también. Haré actualizaciones a esta estructura de informe, por lo que no quiero mantener una versión PDF separada, pero (con suerte) convertir automáticamente.
Además, debido a que genero el informe HTML, puedo asegurarme de que está bien formado XHTML para facilitar la conversión de PDF.

+0

Ni idea, pero +1 para una pregunta realmente interesante – JasonSmith

Respuesta

8

Pisa reclamaciones para apoyar lo que quiero hacer:

pisa es un convertidor html2pdf usando el kit de herramientas de ReportLab, la HTML5lib y pyPdf. Es compatible con HTML 5 y CSS 2.1 (y algunos de CSS 3). Está completamente escrito en Python puro, por lo que es plataforma independiente. El principal beneficio de esta herramienta que un usuario con conocimientos de Web como HTML y CSS puede generar plantillas PDF muy rápidamente sin aprender nuevas tecnologías. Fácil integración en Python marcos como CherryPy, KID de plantillas, TurboGears, Django, Zope, Plone , Google App Engine (GAE), etc.

Así que investigará más a fondo

+0

¿Ha integrado con éxito Pisa en su proyecto Gae? – systempuntoout

+1

Este chico lo explica mejor que yo: http://blog.notdot.net/2010/04/Generating-PDFs-on-App-Engine-Python-and-introducing-Mapvelopes – hoju

+1

Tengo pisa trabajando en gae y funciona estupendo. Sin embargo, no es compatible con todas las etiquetas CSS. Por ejemplo, estaba usando mucho las posiciones, arriba, izquierda y flotantes, todas las cuales no son compatibles con pisa: http://www.htmltopdf.org/doc/pisa-en.html (eche un vistazo al CSS compatible) . Aparte de esas restricciones, es una gran biblioteca. – adam

4

¿Has considerado pyPdf? Dudo que tenga la riqueza funcional que necesita, pero ES un comienzo, y está en Python puro. La clase PdfFileWriter sería la que generara resultados PDF, desafortunadamente requiere PageObject instancias y no proporciona formas reales de juntarlas, excepto extraerlas de documentos PDF existentes. Desafortunadamente, todos los paquetes de generación de páginas en PDF más ricos que puedo encontrar parecen depender del informe u otras bibliotecas de Python no puras :-(.

+0

¿Qué no es puro Python sobre ReportLab? La extensión AFAIK C es opcional y solo para la aceleración del rendimiento. –

+0

@Vinay, por http://www.reportlab.com/docs/reportlab-userguide.pdf, en sistemas Unix-y, también necesita freetype2, PIL, & c - ¿está diciendo que los documentos están equivocados y usted no 'en realidad _necesitas_ esas partes (y el informe hace mágicamente fuentes, imágenes yc de todos modos sin ellos) ...? –

+0

También escuché que el informe fue puro Python ... pyPdf parece tener un nivel demasiado bajo para mi necesidad, porque no estoy tratando de crear un PDF desde cero. – hoju

4

Lo que estás pidiendo es un renderizador de Python HTML puro, que es un gran tarea para decir lo menos (procesadores 'reales' como webkit son el producto de miles de horas de trabajo). Por lo que yo sé, no hay ninguno.

En lugar de buscar un convertidor de HTML a PDF , lo que sugeriría es que cree su informe en un formato que se convierta fácilmente en ambos; por ejemplo, podría compilarlo como un DOM (un conjunto de objetos vinculados) y escribir convertidores para HTML y PDF. Esta es una problema mucho más limitado que la conversión de HTML a PDF, y por lo tanto mucho más fácil de implementar.

+0

que es una lástima ... – hoju