Spaces:
Running
Running
feat: remove PDF size hard rejection, allow large files to proceed with warning
Browse filesReplace 413 hard rejection with warning log that continues processing,
matching the frontend's sizeWarning approach.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
server.js
CHANGED
|
@@ -201,15 +201,12 @@ app.post('/api/generate_pdf', async (req, res) => {
|
|
| 201 |
|
| 202 |
console.log(`[PDF-GEN] [${getElapsed()}] 解析请求完成: HTML ${htmlSizeMB} MB (纯文本=${effectiveSizeMB.toFixed(2)} MB), 消息 ${messageCount || 0} 条, 图片 ${imgCount} 张 (${imgSizeMB} MB)`);
|
| 203 |
|
| 204 |
-
// HTML 大小
|
| 205 |
-
//
|
| 206 |
-
// Benchmark 验证:7.01 MB 需要 31 分钟,
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
const errorMsg = `HTML 内容过大 (纯文本=${effectiveSizeMB.toFixed(2)} MB,超过 ${MAX_TEXT_HTML_SIZE_MB} MB 上限),无法生成 PDF。建议:1) 精简对话内容;2) 移除大型代码块;3) 分批导出。`;
|
| 211 |
-
console.log(`[PDF-GEN] [${getElapsed()}] ${errorMsg}`);
|
| 212 |
-
return res.status(413).json({ error: errorMsg });
|
| 213 |
}
|
| 214 |
|
| 215 |
// 移除 <script> 标签防止 Puppeteer 执行阻塞(如 alert() 弹窗会导致 setContent 内部 CDP 调用超时)
|
|
|
|
| 201 |
|
| 202 |
console.log(`[PDF-GEN] [${getElapsed()}] 解析请求完成: HTML ${htmlSizeMB} MB (纯文本=${effectiveSizeMB.toFixed(2)} MB), 消息 ${messageCount || 0} 条, 图片 ${imgCount} 张 (${imgSizeMB} MB)`);
|
| 203 |
|
| 204 |
+
// HTML 大小预警:超过 10 MB 时 Chromium PDF 引擎可能崩溃,但不阻止处理
|
| 205 |
+
// 前端已显示警告提示用户,这里仅记录日志
|
| 206 |
+
// Benchmark 验证:7.01 MB 需要 31 分钟,大文件可能超时
|
| 207 |
+
const MAX_RECOMMENDED_TEXT_HTML_SIZE_MB = 10;
|
| 208 |
+
if (effectiveSizeMB > MAX_RECOMMENDED_TEXT_HTML_SIZE_MB) {
|
| 209 |
+
console.log(`[PDF-GEN] [${getElapsed()}] ⚠️ 大文件预警: 纯文本=${effectiveSizeMB.toFixed(2)} MB,超过推荐上限 ${MAX_RECOMMENDED_TEXT_HTML_SIZE_MB} MB,Chromium PDF 引擎可能超时或崩溃,继续尝试处理`);
|
|
|
|
|
|
|
|
|
|
| 210 |
}
|
| 211 |
|
| 212 |
// 移除 <script> 标签防止 Puppeteer 执行阻塞(如 alert() 弹窗会导致 setContent 内部 CDP 调用超时)
|