Commit 7b874a8
committed
refactor(PDF): 全方位代码审查与修复 generate-pdf.js
代码质量改进:
- 重命名字段使其更具语义 (CATEGORIES: d/n/s/e -> dir/name/start/end, guides: u/t -> url/title)
- 修复 pdfStr() 缺失的 PDF 控制字符转义 (\n, \r, \t, \b, \f)
- 修复 pdfStr() 在标题为空时返回空字符串导致书签丢失
- 修复 coverHtml 引用未定义变量 casesTotal (由 main 注入)
安全/健壮性:
- startServer 添加 realpathSync 路径穿越防护 (403)
- startServer 完整 MIME 类型映射 (支持字体/SVG/JSON 等)
- startServer 错误处理统一为 try/catch + 500 状态
- closeServer() 改用 Promise 包装,确保 await 真正关闭
- collect() 重复案例编号现在 warn 而非静默跳过
资源管理:
- puppeteer.launch 移入 try 块,启动失败时不再泄漏 server
- finally 块改为 await closeServer + 总是清理 TMP 临时文件
- browser.close() 加 .catch 防止二次抛错掩盖原始错误
性能:
- 合并「PDF 加载 + 复制页面」两个循环(之前加载 105 次 PDF)
- casesTotal 提取为局部变量,替代硬编码 102
可读性:
- 修复 header/addOutlines 注释中关于 useObjectStreams 的过时描述
- tocHtml/coverHtml 添加 HTML 转义,防止特殊字符破坏模板
- pagePdf 进度条参数统一 (guides 用累计, cases 用 i+1)
验证:
- npm run docs:pdf 成功生成 748 页 / 113 书签 / 54.9 MB
- 大纲结构正确 (3 指南 + 8 分类 + 102 案例)
- 元数据正确 (标题/作者/主题)1 parent 32c713e commit 7b874a8
2 files changed
Lines changed: 163 additions & 94 deletions
Binary file not shown.
0 commit comments