Rendern einer ReportLab pdf-gebaut aus SimpleDocTemplate

Habe ich eine bekam eine django-app, die derzeit erzeugt pdfs mit einer Leinwand, die der Benutzer herunterladen kann. Ich erstelle ein StringIO-buffer, tun einige Sachen und senden Sie dann rufen Antwort.schreiben.

# Set up response
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=menu-%s.pdf' % str(menu_id)
# buffer
buff = StringIO()

# Create the pdf object
p = canvas.Canvas(buff)

# Add some elements... then

p.showPage()
p.save()

# Get the pdf from the buffer and return the response
pdf = buff.getvalue()
buff.close()
response.write(pdf)

Will ich jetzt bauen meine pdf-Datei mit der platypus und SimpleDocTemplate und geschrieben haben, dies

# Set up response
response = HttpResponse(mimetype='application/pdf')
pdf_name = "menu-%s.pdf" % str(menu_id)
response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name

menu_pdf = SimpleDocTemplate(pdf_name, rightMargin=72,
                            leftMargin=72, topMargin=72, bottomMargin=18)

# container for pdf elements
elements = []

styles=getSampleStyleSheet()
styles.add(ParagraphStyle(name='centered', alignment=TA_CENTER))

# Add the content as before then...

menu_pdf.build(elements)
response.write(menu_pdf)
return response

Aber das funktioniert nicht, es erstellt eine schlechte pdf-Datei, die nicht geöffnet werden kann. Ich nehme an, der line

response.write(menu_pdf)

ist falsch.

Wie kann ich das Rendern der pdf-Datei?

Schreibe einen Kommentar