Let's say I've got an HTML / CSS page with some images in it, and I wanted to generate a PDF from that source in Python - possible?
http://www.xhtml2pdf.com/
install was a little quirky for me, but otherwise it worked fine.
You can do something like this using 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
(This is a Django view that generates a receipt but obviously you can use Pisa in whatever setting)
You're going to have to tweak the HTML to make it play as nice as possible with Pisa, though.
There is wkhtmltopdf a possibly better option which I recently started using for my project. It not only supports almost complete CSS but also javascript. Try wkhtmltopdf command first to understand it's power. Then you use it's python extension.
Here are links
It was slightly tricky to install for me. So I wrote this quick and dirty script.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With