Django обслуживает PDF-документ, загруженный из Mongodb

Я храню PDF документы в MongoDB; в кодировке base64. Я хочу обслуживать эти PDF-файлы из функции представления. Я надеюсь в конечном итоге встроить их в элемент HTML embed или Iframe. Пока что я просто пытаюсь заставить это работать.

Похожие вопросы:

Вот мое мнение:

def pdf(request, pdf_id):    
    document = mongo_db_client.get_document(pdf_id) # uses a find_one query, returns a cursor on the document
    pdf = base64.b64decode(document.read())
    print(f"pdf type: {type(pdf)}")
    print(f"pdf length: {len(pdf)}")

    # We save the PDF to the filesystem to check 
    # That at least that works:
    with open("loaded_pdf.pdf", "wb") as f:
        f.write(pdf) 

    # See: https://docs.djangoproject.com/en/4.0/howto/outputting-pdf/
    _buffer = io.BytesIO(pdf)
    p = canvas.Canvas(_buffer)
    p.showPage()
    p.save()
    _buffer.seek(0)

    return FileResponse(_buffer, content_type='application/pdf')

В результате я могу просмотреть PDF, сохраненный в файловой системе, а вывод на печать выглядит следующим образом:

pdf type: <class 'bytes'>
pdf length: 669764

Теперь для одного из PDF, который у меня есть, я могу открыть URL и просмотреть его в браузере. Для другого PDF, который у меня есть, он не загружается в браузере, показывая только заголовок PDF. В обоих случаях PDF сохраняется в файловой системе, и я могу просмотреть его там без ошибок.

Есть идеи?

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