import os import markdown from config_manager import ConfigManager from typing import Optional class MarkdownRenderer: """Markdown渲染器,支持将Markdown文本渲染为带样式的HTML文件""" def __init__(self, config_manager: ConfigManager): self.config_manager = config_manager def render_markdown_to_html_file(self, markdown_text: str, output_path: str) -> Optional[str]: """ 将Markdown文本渲染为带样式的HTML文件。 Args: markdown_text: Markdown格式的文本。 output_path: 输出HTML文件的路径。 Returns: 如果成功,返回生成的HTML文件路径;否则返回None。 """ # 检查配置中的RenderMarkdown设置,默认开启 render_enabled = self.config_manager.get("RenderMarkdown") if render_enabled is None: # 如果配置中没有设置,使用默认值True render_enabled = True if not render_enabled: return None try: # 将Markdown转换为HTML html_body = markdown.markdown(markdown_text, extensions=['extra', 'tables']) # 组装完整的HTML文档,并嵌入CSS样式 full_html = self._wrap_with_style(html_body) # 将HTML内容写入文件 with open(output_path, 'w', encoding='utf-8') as f: f.write(full_html) return output_path except Exception as e: print(f"渲染Markdown到HTML文件时出错: {e}") return None def _wrap_with_style(self, html_body: str) -> str: """将HTML内容包裹在带有预设CSS样式的完整HTML结构中""" css_style = """ """ return f"""