ユーザーがダウンロードできるキャンバスを使用して現在pdfを生成するdjangoアプリがあります。StringIO バッファを作成し、いくつかの処理を行ってから、response.write を呼び出します。
# 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)
カモノハシとSimpleDocTemplateを使用してpdfを作成したいと思い、これを書きました
# 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
しかし、これは機能しません。開くことができない悪いPDFが作成されます。私はラインを推測します
response.write(menu_pdf)
間違っています。
PDFをレンダリングするにはどうすればよいですか?