File size: 2,317 Bytes
ef60743
8d15bc3
14c1150
8d15bc3
7cdf99a
8d15bc3
7cdf99a
8d15bc3
7cdf99a
 
 
 
 
8d15bc3
 
 
 
 
7cdf99a
 
 
 
 
 
 
8d15bc3
 
14c1150
 
 
7cdf99a
14c1150
 
 
 
8d15bc3
14c1150
 
7cdf99a
14c1150
 
 
 
 
 
 
 
7cdf99a
ba9eb0c
 
 
 
 
 
 
14c1150
ba9eb0c
14c1150
ba9eb0c
14c1150
 
ba9eb0c
 
 
 
 
 
14c1150
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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()