Spaces:
Sleeping
Sleeping
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() | |