Загружайте Reportlab PDF только тогда, когда пользователь нажимает кнопкуPython

Программы на Python
Ответить
Anonymous
 Загружайте Reportlab PDF только тогда, когда пользователь нажимает кнопку

Сообщение Anonymous »

[ОБНОВЛЕНО] Я пытаюсь понять, как генерировать PDF-файл из Reportlab только тогда, когда пользователь нажимает кнопку «Загрузить», а не автоматически создавать его в моей локальной папке. К вашему сведению, это оптимизированное приложение.
Вот код, который мне нужен для настройки PDF и памяти.

Код: Выделить всё

buffer = io.BytesIO()

doc = canvas.Canvas(buffer, pagesize=letter)

elements = []

# Add simple text to PDF
pdf_title = "Results"
title_paragraph = Paragraph(pdf_title, getSampleStyleSheet()['Title'])

# Add PDF title to PDF
elements.append(title_paragraph)
А вот код, который я использую, чтобы попытаться создать PDF-файл и загрузить его с помощью кнопки. Здесь у меня возникают ошибки.

Код: Выделить всё

downloadable_pdf = doc.build(elements)

# Save the PDF
downloadable_pdf.save()
buffer.seek(0)

st.download_button("Download Results", downloadable_pdf, file_name='ClassificationResults', help=None, on_click="rerun",
type="secondary", icon=None, disabled=False, use_container_width=False)
Я получаю следующую ошибку: AttributeError: у объекта «NoneType» нет атрибута «save»
Я пытался использовать код из другого примера переполнения стека — «Как создать PDF-файл в памяти в ReportLab» — ​​и не знаю, как устранить неполадку. У меня уже есть PDF-файл, работающий с doc.build(elements), и он сохраняется в локальном каталоге, но у меня возникли проблемы с его переводом на кнопку загрузки (без предварительного сохранения в локальном каталоге).
Буду очень признателен за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/795 ... s-a-button
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»