from io import BytesIO from django.http import HttpResponse from django.template.loader import get_template from xhtml2pdf import pisa class PDFResult: def __init__(self, content): self.content = content def render_to_pdf(template_src, context_dict={}): """ Génère un PDF à partir d'un template HTML et retourne le contenu en mémoire. """ template = get_template(template_src) html = template.render(context_dict) result = BytesIO() pdf = pisa.pisaDocument(BytesIO(html.encode("UTF-8")), result) if pdf.err: # Lever une exception ou retourner None en cas d'erreur raise ValueError("Erreur lors de la génération du PDF.") # Retourner le contenu du PDF en mémoire return PDFResult(result.getvalue())