Add terminal, Pan mode, zoom controls and shell commands

This commit is contained in:
accusys
2026-03-18 23:57:19 +08:00
parent f1463cd135
commit 8d39869e39
3 changed files with 797 additions and 33 deletions

135
README.md Normal file
View File

@@ -0,0 +1,135 @@
# MD Reader
Markdown 文件閱讀器,支援 Mermaid 圖表、PDF 匯出、原生視窗預覽。
## 安裝
```bash
cargo build --release
```
## 功能
### 1. Markdown 轉 HTML
```bash
./target/release/md_reader render docs/example.md
# 輸出到 ~/docs/html/example.html
```
### 2. 原生視窗預覽
```bash
./target/release/md_reader preview docs/example.md
```
### 3. 批次轉換
```bash
./target/release/md_reader batch ./docs
```
### 4. PDF 匯出
```bash
./target/release/md_reader export docs/example.md -o output.pdf
# 或使用 render -p
./target/release/md_reader render docs/example.md -p
```
### 5. HTTP 伺服器
```bash
./target/release/md_reader server --port 8080 --path ./docs
```
## 視窗功能
### 工具列按鈕
| 按鈕 | 功能 |
|------|------|
| Print / Save as PDF | 列印或儲存為 PDF |
| Download All SVGs | 下載所有 Mermaid 圖表為 SVG |
| Pan | 滑鼠拖曳平移內容 |
| / + | 縮小 / 放大 |
| Reset | 重置縮放為 100% |
### 終端機命令
`/` 開啟終端輸入框。
| 命令 | 功能 |
|------|------|
| `/help` | 顯示幫助訊息 |
| `/clear` | 清除終端輸出 |
| `/print` | 開啟列印對話框 |
| `/svg` | 下載所有 SVG 圖表 |
| `/reload` | 重新載入頁面 |
| `/zoom [N]` | 設定縮放 (50-200%) |
| `/zoom in``/zoom +` | 放大 10% |
| `/zoom out``/zoom -` | 縮小 10% |
| `/zoom reset``/zoom 0` | 重置為 100% |
### Shell 命令
直接輸入 shell 命令(不帶 `/`)執行:
```bash
ls # 列出檔案
pwd # 顯示目前目錄
cd <dir> # 切換目錄
cat <file> # 顯示檔案內容
```
### Pan 模式
1. 點擊工具列的 `Pan` 按鈕
2. 按住滑鼠左鍵拖曳移動內容
3. 再次點擊 `Pan` 按鈕關閉
### 快捷鍵
| 按鍵 | 功能 |
|------|------|
| `/` | 開啟終端輸入框 |
| `Esc` | 關閉終端輸入框 |
## Mermaid 圖表支援
在 Markdown 中使用 ```mermaid 程式碼塊:
````markdown
```mermaid
graph TD
A[Start] --> B[End]
```
````
支援的圖表類型:
- Flowchart (流程圖)
- Sequence Diagram (序列圖)
- Class Diagram (類別圖)
- State Diagram (狀態圖)
- Entity Relationship Diagram (ER 圖)
- Gantt Chart (甘特圖)
- Pie Chart (圓餅圖)
## 專案結構
```
md_reader/
├── Cargo.toml
├── src/
│ └── main.rs # 主要程式碼
└── docs/
└── mermaid.md # Mermaid 範例文件
```
## 依賴
- Rust 2021 edition
- tao (視窗管理)
- wry (WebView)
- pulldown-cmark (Markdown 解析)
- clap (命令列參數)