From 29dd0257783adc55551e3a7793a5430d9a31034f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E4=B8=80=E4=B8=81?= <1769123563@qq.com> Date: Wed, 19 Nov 2025 14:45:17 +0800 Subject: [PATCH] Optimize PDF Export Logic When Using report_engine_only.py --- report_engine_only.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/report_engine_only.py b/report_engine_only.py index 8ddd7ff..519a9eb 100644 --- a/report_engine_only.py +++ b/report_engine_only.py @@ -324,10 +324,7 @@ def save_pdf(document_ir_path: str, query: str) -> Optional[str]: from ReportEngine.renderers import PDFRenderer renderer = PDFRenderer() - # 生成PDF字节流 - pdf_bytes = renderer.render_to_bytes(document_ir, optimize_layout=True) - - # 保存PDF文件 + # 准备输出路径 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") query_safe = "".join( c for c in query if c.isalnum() or c in (" ", "-", "_") @@ -340,13 +337,24 @@ def save_pdf(document_ir_path: str, query: str) -> Optional[str]: pdf_filename = f"final_report_{query_safe}_{timestamp}.pdf" pdf_path = pdf_dir / pdf_filename - pdf_path.write_bytes(pdf_bytes) + # 使用 render_to_pdf 方法直接生成PDF文件(与regenerate_latest_pdf.py一致) + logger.info(f"开始渲染PDF: {pdf_path}") + result_path = renderer.render_to_pdf( + document_ir, + pdf_path, + optimize_layout=True + ) + # 显示文件大小 + file_size = result_path.stat().st_size + size_mb = file_size / (1024 * 1024) logger.success(f"✓ PDF 已保存: {pdf_path}") - return str(pdf_path) + logger.info(f" 文件大小: {size_mb:.2f} MB") + + return str(result_path) except Exception as e: - logger.error(f"❌ PDF 生成失败: {e}") + logger.exception(f"❌ PDF 生成失败: {e}") return None