[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
111 vues5 pages

Docs Djangoproject Com FR 5 0 Howto Outputting PDF

Transféré par

artemixroot
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
111 vues5 pages

Docs Djangoproject Com FR 5 0 Howto Outputting PDF

Transféré par

artemixroot
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 5

Documentation

Création de fichiers PDF ¶


Ce document explique comment produire des chiers PDF dynamiquement en utilisant des vues Django. C’est
possible grâce à l’excellente bibliothèque Python libre ReportLab.

L’avantage de générer des chiers PDF dynamiquement est que vous pouvez créer des PDF personnalisés pour
différents besoins, par exemple en fonction des utilisateurs ou de certaines parties de contenu.

Par exemple, Django était utilisé chez kusports.com pour générer des tableaux de tournois NCAA personnalisés
et prêts pour l’impression, sous forme de chiers PDF, pour les personnes participant au concours « March
Madness ».

Installation de ReportLab ¶
La bibliothèque ReportLab est disponible sur PyPI. Un manuel d’utilisation (un chier PDF, bien évidemment) est
aussi disponible en téléchargement. Vous pouvez installer ReportLab avec pip:

/ 

Testez votre installation en l’important dans l’interpréteur interactif de Python :

>>> import reportlab

Si cette commande ne produit aucune erreur, l’installation a réussi.

Écriture de la vue ¶
L’élément clé dans la génération dynamique de PDF avec Django est que l’API de ReportLab agit sur des objets
de type chier, et les objets FileResponse de Django acceptent des objets de type chier.

Voici un exemple « Hello World » :

import io
from django.http import FileResponse
from reportlab.pdfgen import canvas

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
def some_view(request):
# Create a file-like buffer to receive PDF data.
buffer = io.BytesIO()

# Create the PDF object, using the buffer as its "file."


p = canvas.Canvas(buffer)

# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
p.drawString(100, 100, "Hello world.")

# Close the PDF object cleanly, and we're done.


p.showPage()
p.save()

# FileResponse sets the Content-Disposition header so that browsers


# present the option to save the file.
buffer.seek(0)
return FileResponse(buffer, as_attachment=True, filename="hello.pdf")

Le code et les commentaires sont assez explicites, mais certains points méritent un éclaircissement :

La réponse dé nit automatiquement le type MIME application/pdf en se basant sur l’extension du nom de
chier. Ceci indique aux navigateurs que le document est un chier PDF, et non pas un chier HTML ou autre
contenu binaire générique de type application/octet-stream.

Lorsque as_attachment=True est transmis à FileResponse, l’en-tête Content-Disposition est


dé ni en conséquence et pousse les navigateurs Web à ouvrir une boîte de dialogue demandant comment
gérer le document, même si un comportement par défaut est dé ni sur la machine. Si le paramètre
as_attachment est omis, les navigateurs gèrent directement le chier PDF en utilisant le programme ou
greffon qui aura été con guré pour les chiers PDF.

Vous pouvez indiquer le paramètre filename de votre choix. Ce contenu sera utilisé dans les boîtes de
dialoque Enregistrer sous….

Il est possible de se brancher à l’API ReportLab : le même tampon transmis comme premier paramètre à
canvas.Canvas peut être passé à la classe FileResponse.

Notez que toute méthode de génération PDF subséquente est appelée sur l’objet PDF (p dans ce cas), et non
pas sur buffer.

Finalement, il est important d’appeler showPage() et save() sur le chier PDF.

Note

ReportLab n’est pas « thread-safe ». Certains utilisateurs ont signalé des problèmes bizarres
lorsque des vues Django de production de PDF sont simultanément appelées par beaucoup de

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
monde.

Autres formats ¶
Vous constaterez que ces exemples ne contiennent pas beaucoup de code spéci que au format PDF,
uniquement les parties utilisant reportlab. Vous pouvez donc employer des techniques semblables pour
générer tout autre format pour lequel vous trouvez une bibliothèque Python. Consultez également Création de
contenu CSV, un autre exemple qui contient certaines techniques utilisables lors de la génération de formats
basés sur du texte.

Voir aussi

Le site Django Packages présente une comparaison de paquets qui peuvent aider à produire des
chiers PDF avec Django.

 Création de contenu CSV Surcharge des gabarits 

Learn More

About Django

Getting Started with Django

Team Organization

Django Software Foundation

Code of Conduct

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Diversity Statement

Get Involved

Join a Group

Contribute to Django

Submit a Bug

Report a Security Issue

Get Help

Getting Help FAQ

#django IRC channel

Django Discord

O cial Django Forum

Follow Us

GitHub

Twitter

Fediverse (Mastodon)

News RSS

Django Users Mailing List

Support Us

Sponsor Django

O cial merchandise store

Benevity Workplace Giving Program

Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com
Convert web pages and HTML files to PDF in your applications with the Pdfcrowd HTML to PDF API Printed with Pdfcrowd.com

Vous aimerez peut-être aussi