2016-10-20 2 views
1

아래 코드를 사용하여 이미지로 PDF를 생성 할 수 있습니다. 어떻게 플라스크 경로에서 생성 된 PDF를 반환 할 수 있습니까?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에 업로드해야합니다. blobstore에 저장) ~ pdf .please help me – user3891081

관련 문제