Note that there are some explanatory texts on larger screens.

plurals
  1. POOptimize PDF conversion in Django / Python
    text
    copied!<p>I have a webapp that export reports in PDF. Everything is fine when the query returns less than 100 values. When the number of records raise above 100 the server raise a 502 Proxy Error. The report outputs fine in HTML. The process that hangs up the server is the conversion from html to PDF. I'm using <a href="http://www.xhtml2pdf.com/" rel="nofollow noreferrer">xhtml2pdf (AKA pisa 3.0)</a> to generate the PDF. The algorythm is something like this:</p> <pre><code>def view1(request, **someargs): queryset = someModel.objects.get(someargs) if request.GET['pdf']: return pdfWrapper('template.html',queryset,'filename') else: return render_to_response('template.html',queryset) def pdfWrapper(template_src, context_dict, filename): ################################################ # # The code comented below is an older version # I updated the code according the comment recived # The function still works for short HTML documents # and produce the 502 for larger onese # ################################################ ##import cStringIO as StringIO import ho.pisa as pisa from django.template.loader import get_template from django.template import Context from django.http import HttpResponse ##from cgi import escape template = get_template(template_src) context = Context(context_dict) html = template.render(context) response = HttpResponse() response['Content-Type'] ='application/pdf' response['Content-Disposition']='attachment; filename=%s.pdf'%(filename) pisa.CreatePDF( src=html, dest=response, show_error_as_pdf=True) return response ##result = StringIO.StringIO() ##pdf = pisa.pisaDocument( ## StringIO.StringIO(html.encode("ISO-8859-1")), ## result) ##if not pdf.err: ## response = HttpResponse( ## result.getvalue(), ## mimetype='application/pdf') ## response['Content-Disposition']='attachement; filename=%s.pdf'%(filename) ## return response ##return HttpResponse('Hubo un error&lt;pre&gt;%s&lt;/pre&gt;' % escape(html)) </code></pre> <p>I've put some thought about creating a buffer so the server can free some memory but I didn't find anything yet. Anyone could help? please? </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload