markdown-doc-gen

中文文档
0.7.0发布于 2026/11/04MITTypeScriptESM + CJS

通用Markdown处理器和多格式文档生成器,用于Web, Word (DOCX)和PowerPoint (PPTX)。

中文使用文档
文档目录13 节
  1. 🌟主要特性
  2. ️架构与管道
  3. 📦快速入门(概念用法)
  4. 1. Web HTML渲染
  5. 2. PDF文件生成(计划)
  6. 3. Word (.docx)文档生成
  7. 4. ppt (.pptx)一代
  8. 📑页面,背景和页边距
  9. 🎨主题定制( DocTheme )
  10. 🧪测试与互动游乐场
  11. 📄文档链接
  12. 📜许可证
  13. 作者

降价文件生成器(markdown-doc-gen)

一个通用的,与框架无关的Markdown处理和多格式文档生成库 浏览器 和 node . js 环境。

目前可用的输出:

  • 网页(HTML):具有可定制样式和CSS自定义属性的语义HTML。
  • 词(docx):完全可编辑的Microsoft Word文档 docx。
  • 幻灯片(.pptx):由PptxGenJS提供支持的可编辑幻灯片。

计划及未来目标:

  • PDF计划于 任务4.3;适配器还不可用。

🌟主要特性

  • 同构(通用):在浏览器客户端(Angular, React, Vue, Svelte, Vanilla JS)和服务器端运行时(Node.js, Bun, Deno)中无缝运行。
  • 框架不可知:零依赖于任何UI框架。
  • AST-Driven架构:由 marked.lexer 一个解耦的 中间文档模型(IR) 由支持的输出适配器共享。
  • 统一设计令牌(DocTheme):使用类型化JSON/TypeScript设计令牌在当前支持的输出中一致地配置颜色、字体和间距。
  • 零依赖HTML引擎快速,纯TypeScript语义HTML渲染器。
  • 开发者游乐场和测试套件: Vitest的交互式浏览器平台和全面测试覆盖率。

️架构与管道

[Markdown String]                     [Custom Theme (Optional)]
       │                                         │
       ▼                                         ▼
1. Lexer (marked.lexer)                  Theme Definition
       │                                 (Defaults + Overrides)
       ▼                                         │
[Raw Tokens AST]                                 │
       │                                         │
       ▼                                         │
2. Intermediate Document Model (IR)              │
   • Pure semantic AST normalization             │
       │                                         │
       └────────────────────┬────────────────────┘
                            │
                            ▼
3. Theme Resolution & Style Binding
   • Binds design tokens to the semantic tree
                            │
        ┌──────────────────────┼──────────────────────┐
        ▼                      ▼                      ▼
   4a. HTML Adapter       4b. DOCX Adapter       4c. PPTX Adapter
      (available)            (available)            (available)
        │                      │                      │
        ▼                      ▼                      ▼
      [HTML]                 [DOCX]                 [PPTX]

        Planned: PDF adapter (`pdfmake`, Task 4.3)

完整的技术参数请参见 ARCHITECTURE.md。


📦快速入门(概念用法)

1. Web HTML渲染

import { parseToAst, normalizeAst, renderToHtml } from 'markdown-doc-gen';

const ast = parseToAst('# Hello World\nThis is **Markdown** rendered to semantic HTML.');
const ir = normalizeAst(ast);

// Fully self-contained: embeds theme variables and base styles automatically
const html = renderToHtml(ir, {
  theme: {
    colors: { primary: '#1e3a5f', text: '#334155' }
  }
});

2. PDF文件生成(计划)

技术: pdfmake (计划)。

架构: 本机适配器将把IR直接映射到 pdfmake 文档定义。它的流布局将处理换行和分页,而无需将HTML转换为PDF。

计划能力:

  • 主题映射排版、颜色、间距、标题、段落、列表、代码块、块引号、表格和图像。
  • 页面大小、方向、页边距、分页符和页面背景。
  • 从数据uri、本地路径或自定义解析器进行图像解析。
  • 浏览器 Blob 输出和Node.js Buffer 输出。

状态: 计划在 任务4.3. 适配器及其公共API尚未实现。

3. Word (.docx)文档生成

import {
  parseToAst,
  normalizeAst,
  renderDocxToBlob,
  renderDocxToBuffer
} from 'markdown-doc-gen';

const ir = normalizeAst(parseToAst(markdown));

// Browser: returns a Blob that can be downloaded by the host application
const docxBlob = await renderDocxToBlob(ir);

// Node.js: returns the DOCX bytes as a Buffer
const docxBuffer = await renderDocxToBuffer(ir);

4. ppt (.pptx)一代

PptxGenJS直接从IR生成可编辑的ppt原生幻灯片。

import { renderPptxToBlob, renderPptxToBuffer } from 'markdown-doc-gen';

const ir = normalizeAst(parseToAst(markdown));
const pptxBlob = await renderPptxToBlob(ir);
const pptxBuffer = await renderPptxToBuffer(ir);
  • 每一个 <!-- page --> 宣言开始幻灯片;前导声明配置第一张幻灯片。
  • 如果没有页面声明,文档将放在一张幻灯片上。
  • 幻灯片默认为宽屏16:9。布局和内容页边距可以通过 RenderPptxOptions。
  • 内容不会跨幻灯片分割或自动缩小以适应。作者负责使其适应每张幻灯片。
  • 页面背景、图像、主题样式和浏览器 Blob / node . js Buffer 支持输出。
  • 内联图像保留其宽高比,默认情况下宽度限制为5.5英寸,可用幻灯片内容宽度和240pt高。 maxImageWidth 以英寸为单位设置宽度限制;源像素在没有升级的情况下被解释为每英寸72像素。
  • 新的导出规范了PptxGenJS幻灯片XML,包括富文本段落属性和唯一的表/形状id。

📑页面,背景和页边距

用HTML注释声明页面边界及其可选的背景图像和内容边距:

<!-- page bg-image="./assets/cover.jpg" margin="36pt 48pt" -->

# Cover content

<!-- page margin="20mm 25mm" -->

# Next page content
  • bg-image 适用于整个页面表面,居中和缩放 cover 同时保留图像比例。它独立于内容页边距;页边距不会缩小或偏移背景。
  • margin 仅控制内容区域。它接受一到四种物理测量 pt, mm, cm,或 in,并使用CSS速记顺序。
  • 文档开头的page指令配置第一页或幻灯片,而不添加空页。后来的指令开始新的页面或幻灯片。
  • HTML、DOCX和PPTX目前支持页面背景和页边距。PDF已规划。

🎨主题定制(DocTheme)

Style当前支持的输出与单一类型配置一致:

import type { DocTheme } from 'markdown-doc-gen';

const customTheme: DocTheme = {
  colors: {
    primary: '#0f766e',     // Headings, links, accent borders
    text: '#1e293b',        // Paragraph and list body text
    codeBg: '#0f172a',      // Dark background for code blocks
    codeText: '#f8fafc',    // Code font color
    cardBg: '#f8fafc',      // Blockquote background
    border: '#e2e8f0'       // Divider lines & table borders
  },
  typography: {
    fontFamily: 'Segoe UI',
    codeFontFamily: 'Consolas',
    baseFontSize: 11
  }
};

🧪测试与互动游乐场

  • 互动网页游乐场:跑 npm run dev:playground 测试Markdown解析、实时HTML呈现和DOCX/PPTX下载(热重新加载)。看到 PLAYGROUND.md。
  • 自动化测试:跑 npm test 来执行完整的测试套件 轻快地。


📜许可证

麻省理工学院的许可。

作者

Duvan Hurtado

版本与发布记录

markdown-doc-gen 共发布 2 个版本,首次发布于 2026/11/04;过去 12 个月发布了 2 个版本。

版本发布日期距今
0.7.0latest2026/11/041 天前
0.0.0-stage2026/11/041 天前

关于 markdown-doc-gen 的常见问题

markdown-doc-gen 是什么?

通用Markdown处理器和多格式文档生成器,用于Web, Word (DOCX)和PowerPoint (PPTX)。

如何安装 markdown-doc-gen?

在项目目录运行 npm install markdown-doc-gen,或使用 pnpm add / yarn add / bun add。

markdown-doc-gen 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

markdown-doc-gen 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

markdown-doc-gen 可以商用吗?

markdown-doc-gen 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

markdown-doc-gen 还在维护吗?

最新版本 0.7.0 发布于 2026/11/04(1 天前);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/11/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。