feat: 完善 Mermaid 配置与预览缩放
This commit is contained in:
+31
-6
@@ -29,7 +29,7 @@ fa07472 feat: 实现网页实时预览
|
||||
ec48bce chore: 初始化项目骨架
|
||||
```
|
||||
|
||||
最新阶段已完成 Chromium PDF 导出、精确预览、PDF.js 渲染缓冲和 Mermaid 分页性能优化。
|
||||
最新阶段已完成 Mermaid 全局导出配置、ELK 布局、代码块配置覆盖、重绘隐藏和两种预览模式共用的显示缩放。
|
||||
|
||||
## 2. 已完成
|
||||
|
||||
@@ -46,7 +46,7 @@ ec48bce chore: 初始化项目骨架
|
||||
|
||||
`packages/core/src/export-config.ts` 已包含:
|
||||
|
||||
- 配置版本号;
|
||||
- 版本 3 配置模型;
|
||||
- A3、A4、A5、Letter、Legal、Tabloid 和自定义纸张;
|
||||
- 横向、纵向;
|
||||
- 四边页边距;
|
||||
@@ -54,6 +54,7 @@ ec48bce chore: 初始化项目骨架
|
||||
- 页码位置和格式;
|
||||
- PDF 元数据;
|
||||
- 打印背景、缩放和一级标题分页选项;
|
||||
- Mermaid 布局、主题、外观和字体;
|
||||
- Zod 数据校验;
|
||||
- 默认 A4 技术文档预设。
|
||||
|
||||
@@ -127,7 +128,7 @@ ec48bce chore: 初始化项目骨架
|
||||
|
||||
提交 `52cf816` 已完成:
|
||||
|
||||
- 导出配置升级到版本 2;
|
||||
- 导出配置升级到版本 3,并兼容迁移版本 2 浏览器缓存;
|
||||
- 纸张收敛为 A3、A4、A5、US-Letter 和 US-Legal;
|
||||
- 默认 A4 纵向和 16mm 四边页边距;
|
||||
- 统一 96 CSS px/in、72 PDF pt/in 和 25.4mm/in 的物理单位换算;
|
||||
@@ -136,6 +137,7 @@ ec48bce chore: 初始化项目骨架
|
||||
- 页眉左中右内容和变量;
|
||||
- 五种页码样式、对齐和起始页码;
|
||||
- Mermaid 官方配置 frontmatter、默认主题与错误隔离;
|
||||
- Mermaid 全局 Dagre/ELK 布局、官方主题、外观和字体设置;
|
||||
- Markdown 表格对齐属性保留和自适应列宽;
|
||||
- 纸张尺寸和页边距实时预览。
|
||||
|
||||
@@ -190,6 +192,23 @@ ec48bce chore: 初始化项目骨架
|
||||
- 增加容器健康检查和统一进程退出处理。
|
||||
- Nginx 显式以 JavaScript MIME 类型提供 PDF.js `.mjs` Worker。
|
||||
|
||||
### 3.6 Mermaid 配置与预览缩放
|
||||
|
||||
- Mermaid 固定为 `11.16.0`,ELK 使用官方
|
||||
`@mermaid-js/layout-elk@0.2.2` 并按需加载核心布局代码。
|
||||
- 全局导出设置支持 Dagre、ELK、官方主题、Classic、Hand-drawn、Neo
|
||||
外观和自定义本地字体。
|
||||
- 单图 `config` Front Matter 可以覆盖全局布局、主题、外观、字体、
|
||||
`themeVariables` 和图表专属配置。
|
||||
- `style`、`classDef` 和 `linkStyle` 保持 Mermaid 原生语义。
|
||||
- `themeCSS`、严格安全模式和资源限制不能由 Markdown 覆盖。
|
||||
- Mermaid 与 Paged.js 计算期间隐藏分页 iframe,避免显示官方渲染器的
|
||||
临时测量节点。
|
||||
- 快速预览和精确预览共用 50%~400% 显示缩放,支持滑块、手动输入、
|
||||
100% 重置和独立浏览器缓存。
|
||||
- 缩放不进入导出配置,不改变分页或 PDF;精确预览会按显示宽度重绘
|
||||
邻近 Canvas,保持文字清晰。
|
||||
|
||||
## 4. 已执行验证
|
||||
|
||||
2026-07-26 在当前完整工作区成功执行:
|
||||
@@ -203,16 +222,21 @@ git diff --check
|
||||
|
||||
结果:
|
||||
|
||||
- 共享配置测试:6 项通过;
|
||||
- 共享配置测试:8 项通过;
|
||||
- 渲染器测试:7 项通过;
|
||||
- 前端测试:47 项通过;
|
||||
- 后端测试:17 项通过;
|
||||
- 前端测试:55 项通过;
|
||||
- 后端测试:23 项通过;
|
||||
- 全项目类型检查通过;
|
||||
- 生产构建通过;
|
||||
- `git diff --check` 通过。
|
||||
|
||||
已使用浏览器插件完成视觉验证:
|
||||
|
||||
- 预览缩放在 50%、100%、150% 和 400% 下均按比例显示,快速与精确
|
||||
预览的分页结果不受缩放影响;
|
||||
- 包含 ELK、Base 主题、Hand-drawn 外观、自定义字体、
|
||||
`themeVariables`、`style` 和 `classDef` 的 Mermaid 样例在快速预览
|
||||
与精确预览中均成功渲染;
|
||||
- 65 页附件的快速预览生成 64 页,67 个 Mermaid 全部使用静态 SVG;
|
||||
- 同一附件的精确预览和最终 PDF 均为 65 页;
|
||||
- 精确预览快速跳转至第 46、47、65 页,无黑色 Canvas、空白页或渲染错误;
|
||||
@@ -259,6 +283,7 @@ git diff --check
|
||||
- `apps/web/src/mermaid-static-image.ts` 负责锁定 Mermaid 盒模型并转换为静态矢量 SVG 图片。
|
||||
- `apps/web/src/paged-table-handler.ts` 负责跨页表格表头处理。
|
||||
- `apps/web/src/PrecisePdfPreview.tsx` 和 `pdf-render-queue.ts` 负责 PDF.js 精确预览和 Canvas 生命周期。
|
||||
- `apps/web/src/preview-zoom.ts` 和 `PreviewZoomControl.tsx` 负责预览缩放缓存、边界和控制界面。
|
||||
- `apps/server/src/pdf-engine.ts` 负责 Chromium 生命周期、并发、网络限制、分页调用和 PDF 输出。
|
||||
- `apps/web/src/ExportSettingsDrawer.tsx` 是导出设置界面。
|
||||
- `apps/web/src/export-settings.ts` 负责版本化浏览器缓存。
|
||||
|
||||
Reference in New Issue
Block a user