2012-03-29 4 views
1

ich einen PDF-Bericht aus der Datenbank unter in views.py durch den Code generiert habewie ein Download-Link für generierter pdf in django geben

resp = HttpResponse(mimetype='application/pdf') 
txn = transaction.objects.order_by('user', 'id') 
report = txn_reports(queryset=txn) 
print report 
report.generate_by(PDFGenerator, filename='filename.pdf')' 

diese PDF-Datei wird immer im Projektordner gespeichert, I don‘ Ich brauche das, ich möchte, dass der Benutzer den Speicherort der Datei anfordert.

Ich möchte eine Download-Option für diese PDF im Client-Browser geben. Wie gebe ich ein "Speichern unter" -Feature für diese Datei in HTML, so dass der Client es im PDF-Format herunterladen kann

Antwort

0

Was Sie tun können, ist diese pdf als HttpResponse an den Browser senden, öffnet der Browser automatisch die PDF und bieten dem Benutzer eine Möglichkeit, es zu speichern.

+0

Ich benutze Reporting in Django, mit dem ich Bericht als PDF erstellt habe und Datei wird automatisch in meinem Projektordner gespeichert, ich brauche nicht, dass stattdessen diese Datei in einem temporären Bereich speichern und an die übergeben werden soll Benutzer – Hari

1

Nehmen Sie die PDF-Daten und senden Sie als HttpReponse.

ich so etwas wie dies in der Vergangenheit getan haben, Berichte mit pisa zu erzeugen:

template = get_template("my_template.html") 
context = Context({"data": report_data}) 
html = template.render(context) 
result = StringIO.StringIO() 
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("UTF-8")), result) 
if not pdf.err: 
    return HttpResponse(result.getvalue(), mimetype='application/pdf') 

Was ist für Sie wirklich die letzte Zeile ist, wo wir die Httpresponse mit dem PDF-Dokument zurück. Der Browser des Benutzers wird ihn dann auffordern, es zu speichern oder es möglicherweise anzuzeigen, wenn es unterstützt wird.

+0

Ich benutze Reporting in Django, mit dem ich Bericht erstellt habe als PDF und Datei wird automatisch in meinem Projektordner gespeichert, ich brauche nicht, dass stattdessen diese Datei in einem temporären Bereich speichern und an den Benutzer übergeben möchten – Hari