fix: 完善本地与网络图片渲染
This commit is contained in:
+52
-17
@@ -31,11 +31,9 @@ fa07472 feat: 实现网页实时预览
|
||||
ec48bce chore: 初始化项目骨架
|
||||
```
|
||||
|
||||
最新阶段已完成 Markdown ECharts YAML 围栏、统一 SVG 渲染与分页,
|
||||
并完善默认示例、源文本收起、顶栏文档状态和快速页码跳转。
|
||||
`v0.4.0` 桌面端阶段已经完成:共享应用服务、无 Server 的 Electron
|
||||
运行时、三套内置主题、统一品牌资源、Windows 安装包以及 Docker Compose
|
||||
发布候选均已通过验证。
|
||||
`v0.4.1` 图片资源阶段已经完成:Web 素材目录、Desktop 同目录资源、
|
||||
受限公网图片下载、可见图片标题、图片整块分页与超高图片单页适配均复用
|
||||
统一渲染链路。Electron 安装包和 Docker Compose 发布候选均已通过验证。
|
||||
|
||||
## 2. 已完成
|
||||
|
||||
@@ -376,6 +374,29 @@ ec48bce chore: 初始化项目骨架
|
||||
- Dockerfile 默认保留完整 Playwright Chromium 安装路径,同时支持通过
|
||||
构建参数复用本机已验证的旧版本运行层,适合内网软件源较慢的环境。
|
||||
|
||||
### 3.14 v0.4.1 图片资源与标题分页
|
||||
|
||||
- `packages/application` 统一提取 Markdown 图片引用,将验证后的本地或
|
||||
远程图片转换为 Data URL,再交给 Web 预览、Playwright PDF 和 Electron
|
||||
PDF 共用的 HTML。
|
||||
- Web 增加素材目录选择,支持把 Markdown 的关联图片作为受限 Base64
|
||||
资源随渲染和 PDF 请求提交;请求体上限同步提高到 24 MiB。
|
||||
- Desktop 增加原生“打开 Markdown”,主进程记录文档目录并直接读取相对
|
||||
图片,不启动 Server,也不允许读取文档目录之外的文件。
|
||||
- 相对路径支持中文、空格和百分号编码;拒绝绝对路径、`..` 穿越和符号
|
||||
链接越界。
|
||||
- 远程图片支持 HTTP/HTTPS、逐跳重定向校验、10 秒超时、格式嗅探与
|
||||
5 分钟缓存;阻止 localhost、私网和链路本地目标,并兼容企业代理常用
|
||||
的域名 Fake-IP 网段。
|
||||
- 每篇文档最多 50 个图片引用,单图不超过 8 MiB,总图片不超过 15 MiB;
|
||||
支持 PNG、JPEG、GIF、WebP、AVIF 和受限 SVG。
|
||||
- 独立图片使用 `figure + img + figcaption`,`[]` 中的文本显示为图片
|
||||
标题;行内混排图片继续保持普通段落语义。
|
||||
- 图片与标题整块分页。超高图先扣除标题区实际高度,再等比例缩放到单页,
|
||||
与 Mermaid 和 ECharts 遵循相同的不可跨页规则。
|
||||
- 默认示例增加 NASA 中等尺寸图与 Unsplash 超高竖图,直接覆盖正常图片
|
||||
和超高图片分页场景。
|
||||
|
||||
## 4. 已执行验证
|
||||
|
||||
2026-07-27 在当前完整工作区成功执行:
|
||||
@@ -396,7 +417,7 @@ git diff --check
|
||||
- 前端测试:67 项通过;
|
||||
- 后端测试:29 项通过;
|
||||
- 桌面端测试:7 项通过;
|
||||
- 全项目共 163 项测试通过;
|
||||
- 全项目共 171 项测试通过;
|
||||
- 全项目类型检查通过;
|
||||
- 生产构建通过;
|
||||
- `git diff --check` 通过。
|
||||
@@ -546,6 +567,28 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
|
||||
- Forge Squirrel 安装包、NUPKG 和 ZIP 均已生成,安装包约 137.48 MiB,
|
||||
当前 Authenticode 状态为未签名。
|
||||
|
||||
2026-07-27 已完成 `v0.4.1` 图片资源发布候选验证:
|
||||
|
||||
- 用户提供的 `tmp/数据工程规划.md` 成功解析 2 张本地 PNG,生成约
|
||||
5.0 MB 内嵌 HTML,图片自然宽度均为 8192px,零资源告警。
|
||||
- Web 真实选择 Markdown 与 `.assets` 目录后生成 4 页快速预览,两张
|
||||
本地图片均完整位于各自页面内容区。
|
||||
- Wikimedia SVG、NASA JPEG 和 Unsplash JPEG 三种公网图片均完成下载、
|
||||
格式识别、Data URL 内嵌和自然尺寸解码。
|
||||
- 1200×1800 超高网络图在扣除标题高度后缩放;最终图片约 977px 高,
|
||||
图加标题约 1001px 高,完整位于同一页且未复制、裁切或跨页。
|
||||
- 默认示例的快速预览和精确预览均为 7 页,两个图片标题可见;容器
|
||||
Playwright PDF 的精确预览同样为 7 页。
|
||||
- Electron 目录版显示 `v0.4.1`,使用 Electron 内置 Chromium 成功渲染
|
||||
两张默认网络图片;Windows 主程序仍为 `md-to-pdf.exe`。
|
||||
- 最终 Squirrel 安装包为
|
||||
`Markdown PDF 导出器-0.4.1 Setup.exe`,144,166,400 字节,SHA-256
|
||||
为 `FC6687494255EE21224B65C1CA2D520316D568CCE8EB99A608A0DEF160611F4E`,
|
||||
Authenticode 状态为未签名。
|
||||
- 本地镜像 `yixiong/md-to-pdf:v0.4.1` 内容 ID 为
|
||||
`sha256:1ded8a8a11ecb8b69eaa116bb9129dd4ec039e9918b047169fe5f8add2af3a80`;
|
||||
Compose 容器健康运行在 `http://localhost:8080`。
|
||||
|
||||
## 5. 当前注意事项
|
||||
|
||||
- `output/` 可能包含本地 PDF 验证产物,已被 Git 忽略,不得提交。
|
||||
@@ -587,7 +630,8 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
|
||||
未来改变分发范围前必须重新完成许可证审查。
|
||||
- 快速预览会受到客户端 Windows 显示缩放、浏览器缩放和设备像素比影响;
|
||||
对页数和分页边界有严格要求时,以精确预览和最终 PDF 为准。
|
||||
- 资源目录上传、本地相对图片、临时目录和路径安全尚未实现。
|
||||
- 图片资源不落盘:Web 使用当前请求内 Base64 资源,Desktop 从受限文档
|
||||
目录读取;远程图片仅保留有界内存缓存。
|
||||
- 桌面端已通过进程内共享服务实现离线 Markdown 渲染、主题读取和 PDF
|
||||
导出,不依赖 Fastify 或本地 HTTP Server。
|
||||
- v0.4.0 AIO 容器已经通过 Docker Desktop 构建、端到端和浏览器验证,
|
||||
@@ -595,16 +639,7 @@ ECharts 第二阶段浏览器与 PDF 验证结果:
|
||||
|
||||
## 6. 推荐接手顺序
|
||||
|
||||
### 阶段一:桌面文档工作区与资源安全
|
||||
|
||||
- Markdown 文件夹或 ZIP;
|
||||
- 相对图片解析;
|
||||
- 每请求独立临时目录;
|
||||
- 路径穿越和符号链接越界防护;
|
||||
- 文件数量、单文件大小、总大小和超时限制;
|
||||
- 请求结束可靠清理。
|
||||
|
||||
### 阶段二:导出配置扩展
|
||||
### 阶段一:导出配置扩展
|
||||
|
||||
- Front Matter 元数据覆盖;
|
||||
- 浏览器本地配置预设;
|
||||
|
||||
Reference in New Issue
Block a user