Как я могу создавать и загружать PDF-файлы в формате Flask, не сохраняя их в своем веб-приложении? - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь получить PDF-файл с помощью модуля ReportLab, который пока работает нормально. Моя проблема в том, что я сохраняю PDF-файл с помощью метода .build () в моем каталоге Webapps. Я хочу, чтобы я мог отправить PDF-файл для загрузки, не сохраняя его раньше. Это как-то возможно с модулем wkhtmltopdf, но я не хочу использовать для этого какие-либо другие серверы. Процесс будет примерно таким: пользователь нажимает кнопку «скачать как pdf», pdf создается и мгновенно возвращается как загрузка без предварительного сохранения. Вы знаете, возможно ли это?

1 Ответ

0 голосов
/ 21 мая 2020

Вы хотите создать PDF на стороне сервера, вернуть его клиенту, не сохраняя PDF (например, в S3)?

Да, это возможно, вы создаете PDF-файл в памяти, используя

buffer = io.BytesIO()
myPDF = canvas.Canvas(buffer, pagesize=letter)

Затем, после создания вашего PDF-файла, вы сохраняете его, используя

myPDF.save()
buffer.seek(0)

Затем, когда вы готовы вернуть PDF-файл в качестве ответа, вы можете вернуть его с помощью:

response = HttpResponse(buffer, content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="{}"'.format("myFile.pdf")
return response
...