XWX-AI Claude Opus 4.6 commited on
Commit
6dd390f
·
1 Parent(s): b4075c9

feat: remove PDF size hard rejection, allow large files to proceed with warning

Browse files

Replace 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>

Files changed (1) hide show
  1. server.js +6 -9
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 大小硬性上限:超过 10 MB 时 Chromium PDF 引擎崩溃
205
- // 使用纯文本大小判断(扣除 base64 图片),与前端保持一致
206
- // Benchmark 验证:7.01 MB 需要 31 分钟,已超过用户接受等待
207
- // 建议用户减少内容量(如精简代码块、移除冗余样式)后重试
208
- const MAX_TEXT_HTML_SIZE_MB = 10;
209
- if (effectiveSizeMB > MAX_TEXT_HTML_SIZE_MB) {
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 调用超时)