это первый раз, когда я использую reportlab.Я скопировал точный код из документации Django.https://docs.djangoproject.com/en/2.1/howto/outputting-pdf/. Когда я сохраняю файл, он сохраняется в виде обычного текстового документа (text / plain), имя остается тем же hello.pdf, и текст отсутствует.
p = canvas.Canvas (буфер) в этой строке, если я пишу имя файла 'hello.pdf' вместо буфера и удаляю буфер из метода fileresponse, он работает и автоматически сохраняется как файл pdf, но я не могу предложить пользователю сохранить файл и тамдве страницы в pdf.
def some_view(request):
# Create a file-like buffer to receive PDF data.
buffer = io.BytesIO()
# Create the PDF object, using the buffer as its "file."
p = canvas.Canvas(buffer)
# Draw things on the PDF. Here's where the PDF generation happens.
# See the ReportLab documentation for the full list of functionality.
p.drawString(100, 100, "Hello world.")
# Close the PDF object cleanly, and we're done.
p.showPage()
p.save()
# FileResponse sets the Content-Disposition header so that browsers
# present the option to save the file.
return FileResponse(buffer, as_attachment=True, filename='hello.pdf')
я попытался указать content_type = 'application / pdf' в коде, предоставленном документацией django, но он все еще сохраняется как простой текстовый документ.я предполагаю, что ответ File не может угадать тип файла из аргумента имени файла, как упомянуто в документации django.
class FileResponse (open_file, as_attachment = False, filename = '', ** kwargs), если open_file не делаетУ вас нет имени или, если имя open_file не подходит, укажите пользовательское имя файла с помощью параметра имени файла.
Добавлены аргумент as_attachment и filename ключевые слова.Кроме того, FileResponse устанавливает Contentheaders, если он может их угадать.
Если я использую код из документации 2.0 django, это работает.Есть ли ошибка в последней документации 2.1 Django?я установил все зависимости по официальной ссылке https://bitbucket.org/rptlab/reportlab/src/927995d54048767531a4ad4a0648e46064b0c4c7/README.txt?at=default&fileviewer=file-view-default environment- ubuntu 18.04lts, pycharm, Python 3.5.6, reportlab 3.5.12.