私のフラスコアプリでは、確実に印刷してapplication_base_folderに保存する前に、pdfのプレビューが表示されます。 私はtmpディレクトリにプレビューを保存できますが、それは私が本当に探しているものではありません。pdf StringIO埋め込みhtmlフラスコテンプレート
私はレポートのラボでPDFを作成しています:
def gen_pdf(text):
output = cStringIO.StringIO()
c = canvas.Canvas(output)
c.drawString(100,100, text)
c.showPage()
c.save()
pdf_output=output.getvalue()
output.close()
return pdf_output
PDFは
class Form(wtforms.Form):
text = TextField('text')
@app.route('/finalize/pdf/')
def finalize_pdf():
form = Form(request.form)
pdf_output = gen_pdf(form.text.data)
return render_template('preview_pdf.html', form=form, pdf_output=pdf_output)
とhtmlページで一部を更新するために、私のフォームをHTMLテンプレートに送信次のようになり、私はテキストを更新できるフォーム、POST値のボタン(ビューfinalize_pdf()には表示されません)、PDFプレビュー:
<form method='post' action={{ url_for('finalize_pdf') }}
{{ form.text }}
<input name='update' value='update'>
</form>
<br />
<embed src="{{ pdf_output }}" type="application/pdf" width='30%'>
ここでの問題は、 "src"がおそらくFS上のパスを探していることでしょうか?とにかく、このエラーで「死ぬ」: UnicodeDecodeError:「ASCII」コーデックは位置11のバイト0x93をデコードすることはできません:序ない範囲内(128)
私は何かが足りない、またはそれを埋め込むには不可能です/オブジェクトをHTMLのStringIOと私は私のFS上のtmp_pathに書く必要がありますか?