Skip to content

Commit 7b874a8

Browse files
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

File tree

docs/public/sql-lab-cases.pdf

10 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)