Spaces:
Sleeping
Sleeping
Upload converter.py
Browse files- converter.py +25 -3
converter.py
CHANGED
|
@@ -184,9 +184,16 @@ class MarkdownToDocxConverter:
|
|
| 184 |
elif element.name == 'h6':
|
| 185 |
p = self.doc.add_heading(element.get_text(), level=6)
|
| 186 |
elif element.name == 'p':
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 190 |
elif element.name == 'a':
|
| 191 |
self.add_hyperlink(parent_paragraph, element.get_text(), element.get('href'))
|
| 192 |
elif element.name == 'pre':
|
|
@@ -243,6 +250,21 @@ class MarkdownToDocxConverter:
|
|
| 243 |
for child in element.children:
|
| 244 |
self.process_html_element(child, parent_paragraph)
|
| 245 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 246 |
def add_mermaid_diagram(self, code: str):
|
| 247 |
"""Рендеринг и вставка диаграммы Mermaid через mermaid.ink"""
|
| 248 |
try:
|
|
|
|
| 184 |
elif element.name == 'h6':
|
| 185 |
p = self.doc.add_heading(element.get_text(), level=6)
|
| 186 |
elif element.name == 'p':
|
| 187 |
+
# Проверяем, содержит ли параграф только изображение
|
| 188 |
+
img_children = element.find_all('img')
|
| 189 |
+
if len(img_children) == 1 and not element.get_text(strip=True):
|
| 190 |
+
self.process_html_element(img_children[0])
|
| 191 |
+
else:
|
| 192 |
+
p = self.doc.add_paragraph()
|
| 193 |
+
for child in element.children:
|
| 194 |
+
self.process_html_element(child, p)
|
| 195 |
+
elif element.name == 'img':
|
| 196 |
+
self.add_image(element.get('src'))
|
| 197 |
elif element.name == 'a':
|
| 198 |
self.add_hyperlink(parent_paragraph, element.get_text(), element.get('href'))
|
| 199 |
elif element.name == 'pre':
|
|
|
|
| 250 |
for child in element.children:
|
| 251 |
self.process_html_element(child, parent_paragraph)
|
| 252 |
|
| 253 |
+
def add_image(self, src: str):
|
| 254 |
+
"""Скачивание и вставка изображения по URL"""
|
| 255 |
+
if not src:
|
| 256 |
+
return
|
| 257 |
+
try:
|
| 258 |
+
response = requests.get(src, stream=True)
|
| 259 |
+
response.raise_for_status()
|
| 260 |
+
|
| 261 |
+
image_stream = io.BytesIO(response.content)
|
| 262 |
+
self.doc.add_picture(image_stream, width=Inches(6))
|
| 263 |
+
|
| 264 |
+
except requests.exceptions.RequestException as e:
|
| 265 |
+
print(f"Ошибка при скачивании изображения {src}: {e}")
|
| 266 |
+
self.doc.add_paragraph(f"[Изображение не найдено: {src}]", style='Body Text')
|
| 267 |
+
|
| 268 |
def add_mermaid_diagram(self, code: str):
|
| 269 |
"""Рендеринг и вставка диаграммы Mermaid через mermaid.ink"""
|
| 270 |
try:
|