Xhtml2pdf: Вывод сгенерированного PDF в виде объекта в памяти (его байты)
Я работаю с Python 3, Django и пакетом xhtml2pdf
.
Я хочу создать PDF из строки HTML, но я не хочу записывать PDF на диск, а просто получить его байты, как при использовании BytesIO
или StringIO
.
Я прочитал xhtml2pdf
документацию:
Файлы в памяти могут быть созданы с помощью StringIO или cStringIO вместо открытия файла. Дополнительные опции будут рассмотрены позже в этом документе.
А это последнее, что я пробовал:
def html_to_pdf(html):
"""Writes a PDF file using WeasyPrint from a given HTML stream
Parameters
----------
html : str
A HTML valid string.
Returns
-------
bytes
A bytes sequence containing the rendered PDF.
"""
new_output = BytesIO()
pisa_status = pisa.CreatePDF(html, dest=new_output)
return new_output.read()
Но это не работает.
Есть идеи, как вывести сгенерированный PDF и объект в памяти и таким образом вернуть его байты?
Я думаю, что в вашем операторе возврата используется new_output
вместо output
.
Однако на самом деле проблема должна быть в чем-то другом, пробовали ли вы вызвать output.seek(0)
перед чтением его байтов с помощью output.read()
?