马一丁

Unlock the connection between markdown and PDF

@@ -71,7 +71,6 @@ from .html_renderer import HTMLRenderer @@ -71,7 +71,6 @@ from .html_renderer import HTMLRenderer
71 from .pdf_layout_optimizer import PDFLayoutOptimizer, PDFLayoutConfig 71 from .pdf_layout_optimizer import PDFLayoutOptimizer, PDFLayoutConfig
72 from .chart_to_svg import create_chart_converter 72 from .chart_to_svg import create_chart_converter
73 from .math_to_svg import MathToSVG 73 from .math_to_svg import MathToSVG
74 -from .markdown_renderer import MarkdownRenderer  
75 try: 74 try:
76 from wordcloud import WordCloud 75 from wordcloud import WordCloud
77 WORDCLOUD_AVAILABLE = True 76 WORDCLOUD_AVAILABLE = True
@@ -103,7 +102,6 @@ class PDFRenderer: @@ -103,7 +102,6 @@ class PDFRenderer:
103 """ 102 """
104 self.config = config or {} 103 self.config = config or {}
105 self.html_renderer = HTMLRenderer(config) 104 self.html_renderer = HTMLRenderer(config)
106 - self.markdown_renderer = MarkdownRenderer()  
107 self.layout_optimizer = layout_optimizer or PDFLayoutOptimizer() 105 self.layout_optimizer = layout_optimizer or PDFLayoutOptimizer()
108 106
109 if not WEASYPRINT_AVAILABLE: 107 if not WEASYPRINT_AVAILABLE:
@@ -812,36 +810,6 @@ class PDFRenderer: @@ -812,36 +810,6 @@ class PDFRenderer:
812 810
813 return html 811 return html
814 812
815 - def _build_markdown_filename(self, document_ir: Dict[str, Any]) -> str:  
816 - """根据元数据生成Markdown文件名"""  
817 - metadata = document_ir.get("metadata") or {}  
818 - title = metadata.get("title") or metadata.get("query") or metadata.get("reportId") or "report"  
819 - safe = "".join(ch for ch in str(title) if ch.isalnum() or ch in (" ", "-", "_")).strip()  
820 - safe = safe.replace(" ", "_")[:80] or "report"  
821 - timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")  
822 - return f"{safe}_{timestamp}.md"  
823 -  
824 - def _export_markdown(self, document_ir: Dict[str, Any]) -> None:  
825 - """  
826 - 使用检查/修复后的IR生成Markdown版本。  
827 -  
828 - - 图表/词云等交互组件降级为原始表格数据;  
829 - - 遇到异常时仅记录警告,不阻断PDF/HTML流程。  
830 - """  
831 - try:  
832 - markdown_content = self.markdown_renderer.render(document_ir)  
833 - if not markdown_content.strip():  
834 - logger.debug("Markdown渲染结果为空,跳过落盘")  
835 - return  
836 -  
837 - output_dir = Path("final_reports/markdown")  
838 - output_dir.mkdir(parents=True, exist_ok=True)  
839 - file_path = output_dir / self._build_markdown_filename(document_ir)  
840 - file_path.write_text(markdown_content, encoding="utf-8")  
841 - logger.info(f"已静默生成Markdown报告: {file_path}")  
842 - except Exception as exc:  
843 - logger.warning(f"生成Markdown报告失败(已忽略,不影响PDF/HTML): {exc}")  
844 -  
845 def _get_pdf_html( 813 def _get_pdf_html(
846 self, 814 self,
847 document_ir: Dict[str, Any], 815 document_ir: Dict[str, Any],
@@ -899,9 +867,6 @@ class PDFRenderer: @@ -899,9 +867,6 @@ class PDFRenderer:
899 logger.info("开始转换数学公式为SVG矢量图形...") 867 logger.info("开始转换数学公式为SVG矢量图形...")
900 math_svg_map = self._convert_math_to_svg(preprocessed_ir) 868 math_svg_map = self._convert_math_to_svg(preprocessed_ir)
901 869
902 - # 在渲染HTML前静默导出Markdown版本  
903 - self._export_markdown(preprocessed_ir)  
904 -  
905 # 使用HTML渲染器生成基础HTML(使用预处理后的IR,以便复用mathId等标记) 870 # 使用HTML渲染器生成基础HTML(使用预处理后的IR,以便复用mathId等标记)
906 html = self.html_renderer.render(preprocessed_ir) 871 html = self.html_renderer.render(preprocessed_ir)
907 872