Skip to content

Yht20927/markdownFomart

Repository files navigation

Markdown Format Converter Suite

md-to.com 的本地 CLI 复刻版 — 16 个工具,100% 本地运行,隐私安全、无需联网。

v2.0 — 架构重构:8 个 shared 模块 · 21 个数据正确性修复 · 84 个回归测试 · 美化增强

工具概览

Markdown → 其他格式

工具 输出 特性 速度
md-to-pdf PDF (29 主题) KaTeX 数学 + hljs 高亮 + 封面/页码/TOC ~3s
md-to-word Word .doc mso 命名空间样式, 表格/标题原生识别 <0.5s
md-to-html HTML5 GitHub 风格 CSS, --theme dark 暗色模式 <0.5s
md-to-image PNG / JPG --scale 高 DPI, --watermark 水印, --padding ~2s
md-to-text 纯文本 代码块保护, 图片/链接顺序修正 <0.1s
md-to-latex LaTeX .tex CJK 自动检测 → ctexart, 特殊字符转义 <0.3s
md-to-rst reStructuredText 动态标题下划线, 脚注 # 配对 <0.3s
md-to-confluence Confluence wiki ***粗斜体*** 支持 <0.2s

其他格式 → Markdown

工具 输入 特性 速度
html-to-md HTML → MD GFM 表格, 无 thead 表格处理 <0.3s
word-to-md .docx → MD GFM 表格 (P0-19 修复) <1s
pdf-to-md PDF → MD --allow-empty 扫描件保护 <1s

表格工具

工具 方向 特性 速度
csv-to-md CSV → MD Table RFC 4180, BOM, 引号内换行/分隔符 <0.1s
md-table-to-csv MD Table → CSV 空 cell 保留, | 转义, RFC 4180 引号 <0.1s
json-to-md JSON → MD Table union 所有 keys, 对象/数组序列化 <0.1s
md-table-to-image MD Table → PNG KaTeX/hljs, browser-pool 复用 ~2s
md-table-to-pdf MD Table → PDF KaTeX/hljs, browser-pool 复用 ~2s

安装

npm workspace(推荐)

# 在项目根目录一次性安装所有依赖
npm install --ignore-scripts

--ignore-scripts 可跳过 Puppeteer 的 Chromium 自动下载(如已手动安装 Chromium)。

单工具安装

cd <tool-dir> && npm install

使用

所有 16 个工具遵循统一 CLI:

node <tool-dir>/index.js convert -i <input> -o <output> [options]

md-to-pdf

# 列出 29 个主题
node md-to-pdf/index.js list

# 查看主题详情
node md-to-pdf/index.js info github-dark-sans-modern

# 转换(默认主题: github-dark-sans-modern-standard)
node md-to-pdf/index.js convert -i in.md -o out.pdf -t <theme-id>

# 预览 HTML(不生成 PDF)
node md-to-pdf/index.js convert -i in.md -o out.html

md-to-html

# 亮色主题(默认)
node md-to-html/index.js convert -i in.md -o out.html

# 暗色模式
node md-to-html/index.js convert -i in.md -o out.html --theme dark

md-to-image

# 基础转换
node md-to-image/index.js convert -i in.md -o out.png

# 高 DPI + 水印 + 自定义 padding/背景
node md-to-image/index.js convert -i in.md -o out.png \
  --scale 2 --padding 40 --bg "#fafafa" --watermark "© 2026"

csv-to-md

# 自动检测分隔符
node csv-to-md/index.js convert -i in.csv -o out.md

# 指定分隔符
node csv-to-md/index.js convert -i in.csv -o out.md -d ';'

pdf-to-md

node pdf-to-md/index.js convert -i in.pdf -o out.md

# 允许空输出(扫描版 PDF)
node pdf-to-md/index.js convert -i in.pdf -o out.md --allow-empty

架构

三条转换管线

范式 工具 引擎
marked → HTML md-to-pdf / html / word / image marked + katex + hljs
纯 regex 顺序替换 md-to-latex / rst / confluence / text 占位符保护 + 正则管线
反向转换 html-to-md / word-to-md / pdf-to-md turndown / mammoth / pdf-parse
表格专用 csv-to-md / md-table-to-csv / json-to-md shared/csv.js + shared/gfm-table.js

shared 模块 (shared/)

模块 用途 消费者
html-renderer.js marked+katex+hljs 渲染工厂 md-to-pdf/html/word/image
placeholders.js NUL 前缀统一占位符 + 泄漏断言 md-to-latex/rst/confluence
gfm-table.js GFM 表格构造 (buildTable) csv-to-md, json-to-md
md-table-parser.js MD 表格解析 (parseTables) md-table-to-csv
csv.js RFC 4180 CSV 解析器+写入器 csv-to-md, md-table-to-csv
turndown-factory.js 反向转换共享工厂 html-to-md, word-to-md
browser-pool.js Puppeteer 单例池 md-to-image/pdf, md-table-to-image/pdf
html-page.js HTML 文档外壳 md-to-html/word/image
cli.js 统一 CLI 工具 全部 16 工具

项目结构

markdownFomart/
├── README.md
├── REFACTOR_PLAN.md          ← 重构方案(v2.0 蓝图)
├── package.json              ← npm workspace 根配置
├── shared/                   ← 共享模块(8 个)
│   ├── __tests__/            ← 共享模块测试(55 个)
│   ├── html-renderer.js
│   ├── placeholders.js
│   ├── gfm-table.js
│   ├── md-table-parser.js
│   ├── csv.js
│   ├── turndown-factory.js
│   ├── browser-pool.js
│   ├── html-page.js
│   └── cli.js
├── md-to-pdf/                ← Markdown → PDF (29 主题 + 美化)
│   └── lib/
│       ├── renderer.js       ← 主题 CSS + KaTeX/hljs 注入
│       ├── templates.js      ← 模板缓存 + 去重
│       ├── converter.js      ← Puppeteer 适配
│       └── cli.js            ← list / info / convert
├── md-to-html/               ← Markdown → HTML (暗色模式)
├── md-to-word/               ← Markdown → Word .doc (mso 样式)
├── md-to-image/              ← Markdown → PNG/JPG (高DPI/水印)
├── md-to-latex/              ← Markdown → LaTeX (CJK 检测)
├── md-to-rst/                ← Markdown → reStructuredText
├── md-to-confluence/         ← Markdown → Confluence wiki
├── md-to-text/               ← Markdown → 纯文本
├── html-to-md/               ← HTML → Markdown (GFM 表格)
├── word-to-md/               ← .docx → Markdown (GFM 表格)
├── pdf-to-md/                ← PDF → Markdown
├── csv-to-md/                ← CSV → MD Table (RFC 4180)
├── md-table-to-csv/          ← MD Table → CSV (空cell/转义)
├── json-to-md/               ← JSON → MD Table (union keys)
├── md-table-to-image/        ← MD Table → PNG (KaTeX/hljs)
└── md-table-to-pdf/          ← MD Table → PDF (KaTeX/hljs)

测试

# 运行所有测试(84 个)
npm test

# 仅共享模块测试(55 个)
npm run test:shared

# 仅工具集成测试(17 个)
npm run test:tools

# 语法检查
npm run lint

v2.0 更新日志

数据正确性 (21 P0 修复)

  • 表格工具:空 cell 保留、\| 转义、RFC 4180 CSV 引号、BOM、引号内分隔符检测
  • 文本工具:图片/链接顺序修正、代码块占位符保护、粗斜体 *** 嵌套
  • LaTeX/RST:特殊字符转义、标题下划线长度匹配、脚注配对、CJK 支持
  • 反向转换:GFM 表格 rule 补齐、无 thead 表格处理

架构统一

  • 抽取 8 个 shared 模块消除重复代码
  • 全部 16 工具使用统一 CLI (shared/cli.js)
  • npm workspace 统一依赖版本

美化

  • PDF: 代码块圆角+阴影+语言标签、表格斑马纹+sticky 表头、引用块彩色边框、admonition 块、封面页/TOC/页码 CSS
  • HTML: GitHub 风格 CSS、--theme dark 暗色模式、prefers-color-scheme 自动切换
  • Image: --scale 高 DPI、--watermark 水印、--padding/--bg 自定义
  • Word: mso 命名空间样式、@page Section1 页面设置

与原版对比

md-to.com 本工具 v2.0
运行方式 浏览器在线 命令行本地
编辑器 分屏实时预览
隐私 浏览器本地处理 完全本地,无网络依赖
批量处理 单个文件 支持脚本批量
集成 手动操作 可嵌入 CI/脚本
主题 29 个 PDF 主题 + 暗色模式
数据正确性 21 项 P0 bug 修复 + 84 回归测试
收费 免费 开源 MIT

License

MIT

About

md-to.com 是一个极简好用的在线 Markdown 格式转换工具,所有转换在浏览器本地完成。本项目将其核心功能复刻为命令行工具,方便批量处理、脚本集成和本地自动化。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors