Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -117,30 +117,32 @@ def save_docx(summary_text: str) -> str:
|
|
| 117 |
|
| 118 |
def save_pdf(summary_text: str) -> str | None:
|
| 119 |
"""
|
| 120 |
-
|
| 121 |
-
Если шрифт не найден или не подключился — возвращает None,
|
| 122 |
-
чтобы не падать с Unicode ошибкой.
|
| 123 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 124 |
if not os.path.exists(FONT_PATH):
|
| 125 |
-
|
| 126 |
return None
|
| 127 |
|
|
|
|
| 128 |
filename = f"summary_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf"
|
| 129 |
|
| 130 |
pdf = FPDF()
|
| 131 |
pdf.add_page()
|
| 132 |
|
| 133 |
-
#
|
| 134 |
try:
|
| 135 |
pdf.add_font(FONT_FAMILY, "", FONT_PATH, uni=True)
|
|
|
|
| 136 |
except Exception as e:
|
| 137 |
-
|
| 138 |
-
print(f"Ошибка подключения шрифта для PDF: {e}")
|
| 139 |
return None
|
| 140 |
|
| 141 |
-
|
| 142 |
-
|
| 143 |
-
# Пишем текст резюме
|
| 144 |
for line in summary_text.split("\n"):
|
| 145 |
pdf.multi_cell(0, 8, line)
|
| 146 |
pdf.ln(0.5)
|
|
@@ -149,6 +151,7 @@ def save_pdf(summary_text: str) -> str | None:
|
|
| 149 |
return filename
|
| 150 |
|
| 151 |
|
|
|
|
| 152 |
# ===== ОСНОВНАЯ ФУНКЦИЯ ДЛЯ GRADIO =====
|
| 153 |
|
| 154 |
def summarize_file(file) -> tuple[str, str | None, str | None]:
|
|
|
|
| 117 |
|
| 118 |
def save_pdf(summary_text: str) -> str | None:
|
| 119 |
"""
|
| 120 |
+
Создаёт PDF и возвращает путь к файлу.
|
|
|
|
|
|
|
| 121 |
"""
|
| 122 |
+
|
| 123 |
+
FONT_PATH = "DejaVuSans.ttf"
|
| 124 |
+
FONT_FAMILY = "DejaVu"
|
| 125 |
+
|
| 126 |
+
# Проверяем что шрифт точно есть
|
| 127 |
if not os.path.exists(FONT_PATH):
|
| 128 |
+
print("‼ Шрифт не найден в корне проекта.")
|
| 129 |
return None
|
| 130 |
|
| 131 |
+
# Формируем имя файла
|
| 132 |
filename = f"summary_{datetime.now().strftime('%Y%m%d_%H%M%S')}.pdf"
|
| 133 |
|
| 134 |
pdf = FPDF()
|
| 135 |
pdf.add_page()
|
| 136 |
|
| 137 |
+
# Подключаем Unicode-шрифт
|
| 138 |
try:
|
| 139 |
pdf.add_font(FONT_FAMILY, "", FONT_PATH, uni=True)
|
| 140 |
+
pdf.set_font(FONT_FAMILY, size=12)
|
| 141 |
except Exception as e:
|
| 142 |
+
print(f"Ошибка подключения шрифта: {e}")
|
|
|
|
| 143 |
return None
|
| 144 |
|
| 145 |
+
# Записываем текст
|
|
|
|
|
|
|
| 146 |
for line in summary_text.split("\n"):
|
| 147 |
pdf.multi_cell(0, 8, line)
|
| 148 |
pdf.ln(0.5)
|
|
|
|
| 151 |
return filename
|
| 152 |
|
| 153 |
|
| 154 |
+
|
| 155 |
# ===== ОСНОВНАЯ ФУНКЦИЯ ДЛЯ GRADIO =====
|
| 156 |
|
| 157 |
def summarize_file(file) -> tuple[str, str | None, str | None]:
|