daswer123 commited on
Commit
b89a2c9
·
verified ·
1 Parent(s): 83fdaf0

Upload converter.py

Browse files
Files changed (1) hide show
  1. 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
- p = self.doc.add_paragraph()
188
- for child in element.children:
189
- self.process_html_element(child, p)
 
 
 
 
 
 
 
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: