WeasyPrint Django: Generación de PDF con WeasyPrint en Django
WeasyPrint es una biblioteca de Python que permite generar archivos PDF a partir de HTML y CSS. En este tutorial, veremos cómo usar WeasyPrint en Django para generar PDFs de forma sencilla y eficiente.
Requisitos previos
Para seguir este tutorial, necesitarás tener instalado lo siguiente:
- Python 3.6 o superior
- Django 3.2 o superior
- Pipenv
Instalación de WeasyPrint
Para instalar WeasyPrint, puedes usar Pipenv:
pipenv install weasyprint
Creando un proyecto Django
Para crear un proyecto Django, usa el siguiente comando:
django-admin startproject mysite
Creando una plantilla HTML
Para crear una plantilla HTML que se utilizará para generar el PDF, crea un archivo llamado pdf.html
en la carpeta templates
de tu proyecto:
<!DOCTYPE html>
<html lang="es">
<head>
<title>Mi PDF</title>
</head>
<body>
<h1>Este es mi PDF</h1>
<p>Este es un ejemplo de cómo generar un PDF con WeasyPrint en Django.</p>
</body>
</html>
Creando una vista para generar el PDF
Para generar el PDF, crearemos una vista que devuelva el archivo PDF como respuesta. Crea una vista llamada pdf_view
en el archivo views.py
de tu proyecto:
from django.shortcuts import render
from weasyprint import HTML
def pdf_view(request):
# Obtenemos la plantilla HTML
template = get_template('pdf.html')
# Generamos el PDF
pdf = HTML(string=template.render(request)).write_pdf()
# Devolvemos el PDF como respuesta
return HttpResponse(pdf, content_type='application/pdf')
Añadiendo la vista a la URLconf
Para que la vista sea accesible, necesitamos añadirla a la URLconf de nuestro proyecto. Abre el archivo urls.py
de tu proyecto y añade la siguiente ruta:
from django.urls import path
from .views import pdf_view
urlpatterns = [
path('', views.home, name='home'),
path('pdf/', pdf_view, name='pdf'),
]
Probando la aplicación
Ahora, ya puedes probar la aplicación. Inicia el servidor de desarrollo de Django con el siguiente comando:
python manage.py runserver
Abre el navegador y navega a la siguiente dirección:
http://localhost:8000/pdf/
Se abrirá un diálogo para guardar el archivo PDF. Guarda el archivo y ábrelo para ver el resultado.
Personalizando el PDF
Puedes personalizar el PDF cambiando el contenido de la plantilla HTML o añadiendo CSS. Por ejemplo, puedes cambiar el tamaño de la fuente, el color del texto o el diseño de la página.
Conclusión
En este tutorial, has aprendido a generar PDFs con WeasyPrint en Django. WeasyPrint es una herramienta muy potente que te permite generar PDFs de forma sencilla y eficiente.
Recursos adicionales
- Documentación de WeasyPrint: https://weasyprint.org/
- Tutorial de Django: https://docs.djangoproject.com/en/4.0/intro/tutorial01/