From eeb9461c2f771c92927e469d2a9cf78da6563b06 Mon Sep 17 00:00:00 2001 From: SXP-Simon Date: Fri, 16 Jan 2026 21:06:43 +0800 Subject: [PATCH] =?UTF-8?q?fix(PDFInstaller):=20=E5=AD=97=E4=BD=93?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=92=8C=E5=8F=8B=E5=A5=BD=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/reports/generators.py | 5 +++-- src/utils/pdf_utils.py | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/reports/generators.py b/src/reports/generators.py index b1f26c8..2952f37 100644 --- a/src/reports/generators.py +++ b/src/reports/generators.py @@ -455,8 +455,9 @@ class ReportGenerator: except Exception: logger.warning("等待页面加载超时,继续执行") - # 减少等待时间,避免内存累积 - await asyncio.sleep(1) + # 确保CDN字体等资源加载完成 + logger.info("等待资源加载(10s)...") + await asyncio.sleep(10) # 导出 PDF,使用更保守的设置 logger.info("开始生成PDF...") diff --git a/src/utils/pdf_utils.py b/src/utils/pdf_utils.py index 0b85fff..057b8a0 100644 --- a/src/utils/pdf_utils.py +++ b/src/utils/pdf_utils.py @@ -169,6 +169,11 @@ class PDFInstaller: "lsb-release", "wget", "xdg-utils", + # Chinese Fonts + "fonts-noto-cjk", + "fonts-wqy-zenhei", + # Emoji Fonts + "fonts-noto-color-emoji", ] # 使用 shell=True 来执行连接命令,但在 asyncio 中通常使用 shell wrap @@ -226,12 +231,14 @@ class PDFInstaller: PDFInstaller._download_status["completed"] = True PDFInstaller._download_status["failed"] = False logger.info("✅ Chromium 后台下载完成!") + return "✅ Chromium 后台下载完成!" else: PDFInstaller._download_status["failed"] = True PDFInstaller._download_status["error_message"] = ( "下载失败,请检查网络连接" ) logger.error("❌ Chromium 下载失败") + return "❌ Chromium 下载失败" except asyncio.TimeoutError: PDFInstaller._download_status["failed"] = True @@ -239,11 +246,13 @@ class PDFInstaller: f"下载超时({timeout_seconds}秒)" ) logger.error(f"❌ Chromium 下载超时({timeout_seconds}秒)") + return f"❌ Chromium 下载超时({timeout_seconds}秒)" except Exception as e: PDFInstaller._download_status["failed"] = True PDFInstaller._download_status["error_message"] = str(e) logger.error(f"后台下载 Chromium 时出错: {e}", exc_info=True) + return f"❌ 后台下载 Chromium 时出错: {e}" finally: PDFInstaller._download_status["in_progress"] = False