# PdfMdPreviewer
**Repository Path**: fx_guo/pdf-md-previewer
## Basic Information
- **Project Name**: PdfMdPreviewer
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-07-12
- **Last Updated**: 2026-09-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# PDF / XPS / Markdown / STL / STEP 查看器
一个基于 .NET 10 WinForms、Aspose.PDF、WPF XPS 组件、WebView2 和 WebGL 的 Windows 只读文件查看器,支持预览 PDF、XPS、Markdown 文档、STL 和 STEP 3D 模型。PDF 使用原生 WinForms 分页控件,不通过 WebView2 渲染。
仓库另含独立运行的 STEP 3D 查看器。主客户端只提供启动入口,STEP 解析与显示不集成到文档预览器进程。
当前版本:`V1.0.4`

## 功能特性
### 独立 STEP 3D 查看器
- 支持打开 `.step`、`.stp`,显示常见 B-rep / POLYLINE STEP 模型的拓扑线框
- 左键旋转,右键或中键平移,滚轮缩放,并可一键适应窗口
- 独立项目位于 `StepViewer/`,生成独立的 `StepViewer.exe`
- 构建桌面客户端时复制到输出目录的 `StepViewer/` 子目录,主客户端通过“文件 → STEP 3D 查看器...”调用
- 主应用支持直接打开并预览 `.pdf`、`.xps`、`.md`、`.markdown`、`.stl`、`.step`、`.stp` 文件
- STEP 使用 OpenCascade WebAssembly 精确三角化与 Three.js GPU 实体渲染,并提供结构树、标准视图、边线和网格切换
- STL 支持 ASCII / 二进制格式,以及旋转、缩放、平移和视角复位
- 工具菜单支持使用 Aspose.Words 23.7 将 Word 文档转换为 PDF(DOC、DOCX、DOCM、RTF)
- 工具菜单支持使用 Aspose.Slides 23.7 将 PowerPoint 演示文稿转换为 PDF(PPT、PPTX、PPTM、PPS、PPSX、PPSM)
- PDF 合并支持添加多个文件、页面缩略图预览、拖拽或按钮编排顺序,以及删除多余页面
- PDF 转图片支持逐页导出 PNG,或按页面顺序纵向合成为一张长图
- 图片转 PDF 支持批量添加 JPG、PNG、BMP、GIF 和 TIFF 图片,拖拽或按钮调整页面顺序,并可选择 A4 自动横竖版或图片原始尺寸
- Office 文件转换不要求用户安装 Microsoft Office、LibreOffice 或其他桌面办公软件
- 支持新建和编辑 Markdown,左侧编辑、右侧实时预览
- Markdown 编辑工具栏支持标题、粗体、斜体、引用、列表、代码和链接
- Markdown 预览支持文字颜色,例如 `[color=#e53935]红色文字[/color]`、`红色文字` 或 `红色文字`
- Markdown 预览和编辑器实时预览支持 Mermaid 流程图、时序图等 `mermaid` / `mmd` 围栏代码块,使用随程序发布的本地 Mermaid 11.16.1 脚本,无需联网
- Markdown 预览自动根据一级至六级标题生成可折叠文档导航,支持点击定位、滚动章节高亮和窄窗口自适应
- 自动保存打开历史并按日期倒序分组显示,文件菜单提供独立的清空历史记录入口
- PDF 使用 Aspose.PDF 23.7 渲染到原生分页控件,不经过 WebView2,支持缩放、适合宽度、翻页和打印
- XPS 自动渲染为高清页面,无需安装系统 XPS Viewer
- Markdown 自动渲染为 HTML 预览
- STL 使用离线 WebGL 交互式渲染,不依赖外部网络资源
- PDF 和 XPS 支持打印
- Markdown 打印时会先转换为临时 PDF,再进入打印流程
- 支持亮色 / 深色主题
- 默认跟随 Windows 系统主题
- 支持 Windows DPI 缩放,适配高分屏
- 程序启动后自动最大化
- 状态栏右侧显示当前程序版本号
- 自定义应用图标、PDF 文件图标、Markdown 文件图标
- 可通过菜单修复 PDF、XPS 系统默认打开方式
## 运行环境
- Windows 10 / Windows 11
- .NET 10 Runtime 或 SDK
- Microsoft Edge WebView2 Runtime
- PDF 预览、PDF 合并、PDF 转图片、图片转 PDF 以及 Word / PPT 转 PDF 需要有效的 Aspose 授权
多数 Windows 10/11 环境已经安装 WebView2 Runtime。如果没有安装,请先安装 Microsoft Edge WebView2 Runtime。
## 项目结构
```text
.
├─ app/
│ ├─ Program.cs
│ └─ PdfMdPreviewer.App.csproj
├─ Assets/
│ ├─ app.ico
│ ├─ app-icon.png
│ ├─ pdf-file.ico
│ ├─ markdown-file.ico
│ └─ Mermaid/
├─ scripts/
│ ├─ register.ps1
│ └─ unregister.ps1
├─ MarkdownRenderer.cs
├─ MarkdownPreviewAssets.cs
├─ AsposePdfService.cs
├─ PdfMergeForm.cs
├─ PdfImageExportForm.cs
├─ ImageToPdfForm.cs
├─ PdfNativePreviewControl.cs
├─ OfficePdfConverter.cs
├─ PreviewSurface.cs
├─ RegistrationService.cs
├─ ThemeService.cs
├─ ViewerForm.cs
└─ PdfMdPreviewer.csproj
```
## 构建
在项目根目录执行:
```powershell
dotnet publish .\PdfMdPreviewer.csproj -c Release -r win-x64 --self-contained false
dotnet publish .\app\PdfMdPreviewer.App.csproj -c Release -r win-x64 --self-contained false
```
Aspose 授权支持以下配置方式:
- 把 `Aspose.Total.NET.lic`、`Aspose.PDF.NET.lic`、`Aspose.Words.NET.lic` 或 `Aspose.Slides.NET.lic` 放在主程序目录;本地开发时可放在项目根目录,编译和发布会自动复制
- 设置 `PDF_MD_PREVIEWER_ASPOSE_LICENSE` 环境变量,值为授权文件的完整路径
- Metered 授权可设置 `PDF_MD_PREVIEWER_ASPOSE_PUBLIC_KEY` 和 `PDF_MD_PREVIEWER_ASPOSE_PRIVATE_KEY`
许可证文件已通过 `.gitignore` 排除,请勿提交到代码仓库。
发布后的主程序位置:
```text
app\bin\Release\net10.0-windows\win-x64\publish\PdfMdPreviewer.App.exe
```
## 使用方式
直接运行发布目录中的:
```text
PdfMdPreviewer.App.exe
```
也可以把文件路径作为启动参数传入:
```powershell
.\PdfMdPreviewer.App.exe "D:\example.pdf"
.\PdfMdPreviewer.App.exe "D:\document.xps"
.\PdfMdPreviewer.App.exe "D:\notes.md"
.\PdfMdPreviewer.App.exe "D:\model.stl"
```
## 菜单说明
### 文件
- 新建 Markdown:打开左右分栏的 Markdown 编辑器
- 打开:选择 PDF、XPS、Markdown、STL 或 STEP 文件
- 打印:打印当前打开的文件
- 历史记录:按日期查看并重新打开历史文件
- 清空历史记录:确认后删除全部历史记录文件
- 关闭:退出程序
### 工具
- Word 转 PDF:选择 Word 文档和保存位置,通过 Aspose.Words 生成 PDF
- PPT 转 PDF:选择 PowerPoint 文件和保存位置,通过 Aspose.Slides 生成 PDF
- PDF 合并与页面编排:添加一个或多个 PDF,通过缩略图拖拽、上移、下移和删除页面,按当前顺序生成新 PDF
- PDF 转图片:可将每一页分别导出为 PNG,也可把所有页面纵向合成为一张 PNG 长图
- 图片转 PDF:批量添加图片、调整页面顺序并生成 PDF,可选择 A4 自动横竖版或按图片原始尺寸分页
Markdown 编辑器支持 `Ctrl+N` 新建、`Ctrl+S` 保存、`Ctrl+Shift+S` 另存为,
以及 `Ctrl+B` 粗体、`Ctrl+I` 斜体。关闭未保存的编辑窗口时会提示保存。
历史文件保存在 `%LocalAppData%\PdfMdPreviewer\History`,名称格式为
`yyyy-MM-dd-原文件名.ext`;同一天遇到同名文件时会自动追加序号。
### 设置
- 修复系统默认:把本程序注册为 PDF、XPS 默认应用候选,并打开 Windows 默认应用设置页面
- 设置主题:
- 跟随 Windows
- 亮色
- 深色
## 设置为 PDF、XPS、STL、STEP 默认打开工具
程序内菜单:
```text
设置 > 修复系统默认
```
或者运行脚本:
```powershell
.\scripts\register.ps1 -Build -SetDefaultViewer
```
说明:Windows 10/11 对默认应用有 `UserChoice` 保护,普通程序不能静默强制修改最终默认应用。程序会完成默认应用候选注册,并打开 Windows 默认应用设置页面,你需要在系统页面中确认 `.pdf`、`.xps` 使用本程序打开。
## 卸载默认应用注册
```powershell
.\scripts\unregister.ps1
```
## 文件图标
项目包含三个图标:
- `Assets/app.ico`:应用程序图标
- `Assets/pdf-file.ico`:PDF 文件关联图标
- `Assets/markdown-file.ico`:MD / Markdown 文件关联图标
如果修改图标后资源管理器仍显示旧图标,可以重启 Explorer 或注销后重新登录,让 Windows 刷新图标缓存。
## 备注
- 当前版本不包含 Windows Explorer 右侧预览窗格扩展。
- 当前版本是只读查看器,不提供 PDF 或 Markdown 编辑功能。
- Markdown 渲染器覆盖常用标题、段落、列表、代码块、链接等基础语法。