SaveChat_to_pdf / app.py
AndreySokolov01's picture
Update app.py
14c1150 verified
import gradio as gr
import pdfkit
import os
# Функция для генерации PDF из введенного текста
def generate_pdf(text):
# Создаем HTML-контент с текстом
html_content = f"""
<!DOCTYPE html>
<html>
<head>
<title>Диалог из чата</title>
<style>
body {{
font-family: Arial, sans-serif;
font-size: 14px;
line-height: 1.5;
}}
</style>
</head>
<body>
<h1>Диалог из чата</h1>
<p>{text}</p>
</body>
</html>
"""
# Задаем пути к временным файлам
html_path = "chat_dialog.html"
pdf_path = "chat_dialog.pdf"
try:
# Сохраняем HTML-контент во временный файл
with open(html_path, "w", encoding="utf-8") as html_file:
html_file.write(html_content)
# Конвертируем HTML в PDF
pdfkit.from_file(html_path, pdf_path)
# Возвращаем путь к PDF-файлу
return pdf_path
except Exception as e:
return f"Произошла ошибка при создании PDF: {str(e)}"
finally:
# Удаляем временный HTML-файл, если он существует
if os.path.exists(html_path):
os.remove(html_path)
# Функция для создания и запуска приложения Gradio
def run_app():
# Интерфейс Gradio
with gr.Blocks() as demo:
with gr.Row():
chatbot = gr.Chatbot()
with gr.Column():
user_input = gr.Textbox(label="Введите текст из чата", placeholder="Введите текст...")
generate_button = gr.Button("Сохранить в PDF")
pdf_link = gr.Textbox(label="Ссылка на PDF", interactive=False)
# Устанавливаем действие для кнопки
generate_button.click(generate_pdf, inputs=[user_input], outputs=[pdf_link])
# Запуск приложения
demo.launch()
# Запуск приложения через вызов функции
if __name__ == "__main__":
run_app()