2009-04-24 6 views

Odpowiedz

4

można zrobić coś takiego za pomocą Pisa:

def receipt(request, id): 
    import ho.pisa as pisa 
    from django.template.loader import render_to_string 
    from datetime import datetime 

    r = get_or_404(id, request.affiliate)  
    now = datetime.now() 
    contents = render_to_string('home/reservations/receipt.html', { 
     'reservation': r, 
     'today': now 
    }) 
    filename = now.strftime('%Y-%m-%d') + '.pdf' 
    response = HttpResponse(mimetype='application/pdf') 
    response['Content-Disposition'] = 'attachment; filename=' + filename 
    pdf = pisa.CreatePDF(contents, response) 
    if pdf.err: 
     message(request, 'Unable to generate the receipt.') 
     return HttpResponseRedirect(reverse('view_reservation', args=[r.id]))  
    else: 
     return response 

(To jest widok Django, który generuje pokwitowanie, ale oczywiście można użyć Pisa w jakiejkolwiek ustawienia)

Będziesz mieć zmodyfikować kod HTML tak, aby gra była tak przyjemna, jak to tylko możliwe dzięki Pisa.

4

Istnieje wkhtmltopdf to prawdopodobnie lepsza opcja, którą ostatnio zacząłem używać dla mojego projektu. Obsługuje nie tylko prawie kompletny CSS, ale także javascript. Najpierw wypróbuj polecenie wkhtmltopdf, aby zrozumieć jego moc. Następnie używasz rozszerzenia Pythona.

Oto linki

było nieco trudne do zainstalowania dla mnie. Napisałem więc ten szybki i brudny skrypt. tylko lub jako część przycisku „pobrać dokument w formacie PDF” na stronie internetowej

+2

Chciałbym dać +2 za scenariusz! Dzięki! – heltonbiker

Powiązane problemy