feat: v0.5.0 —— 导出 PDF(带预览窗口)

导出
- 文件 → 导出 PDF…(Ctrl+E)先弹出预览窗口,确认后点「保存 PDF…」选路径
- A4 纸、16mm 页边距;预览和导出共用同一个 QTextDocument,页宽一致
- 只用 Qt 自带的 QPrinter / QTextDocument,没有引入外部 PDF 库

排版
- 新增 MarkdownRenderer:把 Markdown 解析成排版好的富文本文档
- 支持标题、列表 / 任务列表、引用、围栏代码块、行内代码、
  粗体 / 斜体 / 删除线、链接;图片输出 alt 文字,表格暂按原文
- 代码块带底色、引用带竖线、分隔线画成横线

其它
- 用用户更新后的 logo.png 重新生成了 ico / icns / png
- docs/screenshot-export.png 与 README 同步
This commit is contained in:
2026-10-22 17:58:01 +08:00
parent c83b4a239c
commit 8cb0702614
13 changed files with 588 additions and 4 deletions
+19 -2
View File
@@ -2,7 +2,7 @@
一个轻量的跨平台 Markdown 编辑器,基于 **Qt 5 / C++17** 构建。
当前版本 **0.4.0**。
当前版本 **0.5.0**。
## 界面
@@ -14,6 +14,10 @@
![源代码模式](docs/screenshot-source.png)
导出 PDF 前先给一个预览窗口,确认无误再选路径保存:
![导出 PDF](docs/screenshot-export.png)
## 功能
### 编辑
@@ -56,6 +60,16 @@
按钮在源码模式下会变成 `</src>`。
### 导出 PDF
**文件 → 导出 PDF…**(`Ctrl+E`)会先弹出预览窗口,里面就是最终排版;
点「保存 PDF…」选个位置即可。A4 纸、16mm 页边距,预览和导出用的是同一份
排版文档,所见即所得。
导出用的是 Qt 自带的 `QPrinter` + `QTextDocument`,不需要额外的 PDF 库。
支持标题、列表(含任务列表)、引用、代码块、行内代码、粗体 / 斜体 / 删除线、
链接;图片只输出 alt 文字,表格暂时按原文输出。
### 文件
- 新建、打开、保存、另存为、最近打开(最多 8 条)
@@ -152,6 +166,7 @@ VoiletMark --screenshot a.png # 渲染窗口截图后退出(调试 / 视觉
| `Ctrl+N` / `Ctrl+O` / `Ctrl+S` | 新建 / 打开 / 保存 |
| `Ctrl+Shift+S` | 另存为 |
| `Ctrl+Shift+O` | 打开文件夹 |
| `Ctrl+E` | 导出 PDF(先预览) |
| `Ctrl+B` | 显示 / 隐藏侧栏 |
| `Ctrl+Shift+M` | 源代码模式 |
| `Ctrl+1` ~ `Ctrl+6` | 设为 1–6 级标题(再按取消) |
@@ -170,7 +185,9 @@ src/
├── ThemeManager.{h,cpp} 四种主题模式 + 系统检测 + 调色板 / QSS 生成
├── MainWindow.{h,cpp} 菜单、文件读写、文件夹侧栏、状态栏、设置
├── MarkdownEditor.{h,cpp} 编辑器控件:行号、缩进、标题 / 代码块命令、源码模式
└── MarkdownHighlighter.{h,cpp} Markdown 着色与就地渲染(隐藏标记、标题缩放)
├── MarkdownHighlighter.{h,cpp} Markdown 着色与就地渲染(隐藏标记、标题缩放)
├── MarkdownRenderer.{h,cpp} 导出用的 Markdown → 富文本文档转换
└── ExportDialog.{h,cpp} PDF 预览与保存对话框
logo.png 图标源文件
resources.qrc 窗口图标资源