2016-10-20 16 views
1

以下のコードを使用して画像を含むPDFを生成することができます。生成されたPDFをFlaskルートからどのように返すことができますか?FlaskでFPDFで生成されたPDFを返す

from fpdf import FPDF 
pdf = FPDF() 
img = input('enter file name') 
g = img + '.jpg' 
pdf.add_page() 
pdf.image(g, 50, 50) 
pdf.output(img + '.pdf', 'F') 

答えて

2

使用make_response文字列(dest='S')などのPDFデータ出力とレスポンスを作成します。 Encode the output as latin-1、そうでない場合、FlaskはUTF-8としてエンコードし、有効ではない可能性があります。 Content-DispositionContent-Typeヘッダーを設定して、ブラウザにPDFファイルのダウンロード/処理を指示します。構築された応答を返します。

from flask import make_response 

@app.route('/jpg_to_pdf/<name>') 
def jpg_to_pdf(name): 
    pdf = FPDF() 
    pdf.add_page() 
    pdf.image(os.path.join(app.instance_path, name + '.jpg'), 50, 50) 
    response = make_response(pdf.output(dest='S').encode('latin-1')) 
    response.headers.set('Content-Disposition', 'attachment', filename=name + '.pdf') 
    response.headers.set('Content-Type', 'application/pdf') 
    return response 

この例では、イメージがインスタンスフォルダにあると想定し、イメージが実際にどこにあるかを示すために必要に応じて変更します。

+0

私はBlobstoreにアップロードされた画像を指摘します – user3891081

+0

実際にGoogleのアプリエンジンは一時フォルダに画像をアップロードできません。まずはblobstoreにアップロードする必要があります。ブロブストアに保存されています)からpdf .please help me – user3891081

関連する問題