Генерация и отображение файла в браузере
Шаг 1: Установите необходимые библиотеки
Сначала вам нужно установить необходимые библиотеки. Вы можете сделать это с помощью pip:
pip install reportlab Flask
Шаг 2: Создайте скрипт
Создайте Python-скрипт (например, app.py) с следующим содержимым:
from flask import Flask, send_file, render_template_string
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
import io
app = Flask(__name__)
@app.route('/')
def index():
return render_template_string('''
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Генератор PDF</title>
</head>
<body>
<h1>Генератор PDF</h1>
<a href="/generate_pdf">Создать PDF</a>
</body>
</html>
''')
@app.route('/generate_pdf')
def generate_pdf():
# Создание PDF в памяти
buffer = io.BytesIO()
p = canvas.Canvas(buffer, pagesize=letter)
p.drawString(100, 750, "Привет, это сгенерированный PDF!")
p.save()
# Перемещение в начало буфера StringIO
buffer.seek(0)
# Отправка PDF в браузер
return send_file(buffer, mimetype='application/pdf', as_attachment=False, download_name='generated.pdf')
if __name__ == '__main__':
app.run(debug=True)
Шаг 3: Запустите скрипт
Запустите скрипт с помощью следующей команды:
python app.py
Шаг 4: Доступ к веб-интерфейсу
Откройте ваш веб-браузер и перейдите по адресу http://127.0.0.1:5000/. Вы должны увидеть простую веб-страницу с ссылкой для генерации PDF. Нажатие на ссылку сгенерирует PDF и отобразит его в браузере в реальном времени.
Объяснение
- Настройка Flask: Скрипт настраивает базовый веб-сервер Flask.
- Маршрут индекса: Маршрут / обслуживает простую HTML-страницу с ссылкой для генерации PDF.
- Маршрут генерации PDF: Маршрут /generate_pdf генерирует PDF с использованием библиотеки reportlab и отправляет его в браузер.
- Генерация PDF: PDF создается в памяти с использованием буфера io.BytesIO, который затем отправляется в браузер с помощью функции send_file Flask.
Этот скрипт предоставляет базовый пример генерации и отображения PDF в реальном времени. Вы можете расширить его, добавив более сложное содержимое PDF, обрабатывая ввод пользователя или интегрируясь с другими сервисами.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.