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()?

Вернуться на верх