Para mi sitio impulsado por django, estoy buscando una solución fácil para convertir páginas dinámicas html a pdf.
Las páginas incluyen HTML y gráficos de la API de visualización de Google (que está basada en JavaScript, pero incluir esos gráficos es imprescindible).
Respuestas:
Pruebe la solución de Reportlab .
Descárguelo e instálelo como de costumbre con python setup.py install
También necesitará instalar los siguientes módulos: xhtml2pdf, html5lib, pypdf con easy_install.
A continuación, se muestra un ejemplo de uso:
Primero defina esta función:
Entonces puedes usarlo así:
La plantilla:
Espero eso ayude.
fuente
cStringIO.StringIO
aio.StringIO
, debemos definirresult
como enresult = io.BytesIO()
lugar deresult = StringIO
.https://github.com/nigma/django-easy-pdf
Modelo:
Ver:
Si desea utilizar django-easy-pdf en Python 3, consulte la solución sugerida aquí .
fuente
Acabo de preparar esto para CBV. No se utiliza en producción, pero genera un PDF para mí. Probablemente necesite trabajar para el lado de los informes de errores, pero hasta ahora funciona.
Usado como:
fuente
html.encode("ISO-8859-1")
porhtml.decode("utf-8")
content_type = "application/pdf"
Pruebe wkhtmltopdf con cualquiera de los siguientes contenedores
django-wkhtmltopdf o python-pdfkit
Esto funcionó muy bien para mí, admite javascript y css o cualquier cosa que admita un navegador webkit.
Para obtener un tutorial más detallado, consulte esta publicación de blog
fuente
Después de intentar que esto funcione durante demasiadas horas, finalmente encontré esto: https://github.com/vierno/django-xhtml2pdf
Es una bifurcación de https://github.com/chrisglass/django-xhtml2pdf que proporciona una combinación para una vista genérica basada en clases. Lo usé así:
Utilice el nombre del modelo que definió en su vista en minúsculas al completar los campos de la plantilla. Debido a que es un GCBV, puede simplemente llamarlo como '.as_view' en su urls.py:
fuente
Puede usar el editor de iReport para definir el diseño y publicar el informe en el servidor de informes jasper. Después de la publicación, puede invocar el resto de la API para obtener los resultados.
Aquí está la prueba de la funcionalidad:
Y aquí hay un ejemplo de la implementación de la invocación:
fuente
Obtengo el código para generar el PDF a partir de la plantilla html:
fuente
Si tiene datos de contexto junto con css y js en su plantilla html. Entonces tienes una buena opción para usar pdfjs .
En su código puede usarlo así.
En su HTML puede vincular css y js externos o internos, generará la mejor calidad de pdf.
fuente