2026-07-25 21:52:45 +08:00
2026-07-25 16:51:16 +08:00
2026-07-25 21:52:45 +08:00
2026-07-25 21:52:45 +08:00
2026-07-25 16:51:16 +08:00
2026-07-25 16:51:16 +08:00
2026-07-25 21:52:45 +08:00
2026-07-25 21:52:45 +08:00
2026-07-25 21:52:45 +08:00
2026-07-25 21:52:45 +08:00

Markdown PDF 导出器

一个面向内网部署的 Markdown 排版与 PDF 导出工具。项目目标是使用同一份 HTML 和 CSS 完成网页预览与 Chromium PDF 渲染,并提供纸张、页边距、页眉页脚、页码及主题扩展能力。

当前状态

已经实现:

  • React Markdown 编辑与本地文件读取;
  • Fastify 预览接口;
  • 共享导出配置模型;
  • 动态主题清单、CSS 和静态资源接口;
  • Markdown、Front Matter、安全过滤和扩展语法渲染核心;
  • 表格、任务列表、脚注、代码高亮、KaTeX 和 Mermaid
  • iframe 隔离的 A4 页面预览与主题切换;
  • 内置 Typora 风格主题,以及仅供本机使用的 Typora 默认主题导入工具;
  • Docker 与 PDF 渲染目录预留。

Chromium PDF 下载、完整导出配置面板和本地资源文件处理将在后续阶段实现。

本地开发

要求 Node.js 22 或更高版本。

npm install
npm run dev

默认地址:

页面支持直接编辑 Markdown,或选择本地 .md 文件。文件内容将读取到当前浏览器页面并发送给内网转换服务,不写入数据库。

本地导入 Typora 默认主题

项目不会打包或提交 Typora 官方默认主题。如本机已安装 Typora,可以将其 GitHub 默认主题复制到 Git 忽略的本地主题目录:

npm run theme:import-typora

默认读取 %APPDATA%\Typora\themes,写入 .local\themes\typora-github。启动开发服务后,该主题会出现在预览页面的主题选择器中。导入工具不会覆盖已存在的目标目录;如需重新导入,请先自行确认并移走旧目录。

本地主题由动态主题注册器加载,CSS 中的相对字体和图片会通过受限资源接口提供。外部 URL、越界路径和符号链接逃逸会被拒绝。

测试与构建

npm test
npm run typecheck
npm run build
git diff --check

隐私原则

文档和资源文件仅用于当前转换请求。PDF 阶段将为每次请求创建隔离的临时目录,并在成功或失败后统一清理,不接入数据库或文档历史存储。

S
Description
No description provided
Readme
90 MiB
2026-08-26 10:50:32 +08:00
Languages
TypeScript 83.8%
JavaScript 11.3%
CSS 3.6%
Dockerfile 0.4%
NSIS 0.3%
Other 0.3%