WeasyPrint Django: Generación de PDF con WeasyPrint en Django

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:

HTML
<!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:

Python
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:

Python
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/