MagicTools
documentMarch 18, 202669 views6 min read

文档格式转换实战指南:Markdown、HTML、PDF 互转全解析

每个文档都有它最适合的格式。Markdown 适合写作,HTML 适合网页展示,PDF 适合打印分发,Word 适合办公协作。麻烦在于,现实工作中你经常需要在这些格式之间穿梭——把博客文章转成 PDF 发给客户,把 Word 文档迁移到知识库,把网页内容提取成 Markdown 归档。

格式转换看似简单,真正动手时却问题频出:格式乱了、表格消失了、中文变乱码了。这篇指南梳理各种转换路径的最佳方案,帮你少走弯路。

四大格式特点对比

在选择转换路径之前,先理解各格式的本质特点:

格式 可读性 可编辑性 渲染效果 文件大小 适用场景
Markdown (.md) 极高(纯文本) 极高 依赖渲染器 极小 技术文档、博客写作、README
HTML (.html) 中(含标签) 浏览器渲染 小~中 网页、邮件模板、文档展示
PDF (.pdf) 高(视觉) 极低 固定排版 中~大 打印、正式文件、跨平台分发
Word (.docx) Office 渲染 办公协作、需要批注修订

核心规律:可编辑性越高的格式,排版固定性越低;排版越固定的格式,转换损耗越大。 PDF 是单向格式,从 PDF 往外转时质量损耗最大。

Markdown → PDF

这是最常见的转换需求,有三种方案,效果各有差异:

方案一:浏览器打印(推荐入门用)

  1. 在支持 Markdown 预览的工具中打开文档(VS Code 预览、MagicTools、Typora)
  2. Ctrl+P(Mac:Cmd+P)打开打印对话框
  3. 目标打印机选择「另存为 PDF」
  4. 调整页面设置:去掉页眉页脚勾选,设置合适的边距

优点:操作简单,零学习成本,所见即所得。 缺点:代码高亮、字体、分页位置依赖浏览器渲染,不同机器可能有细微差异。

方案二:Pandoc 命令行(推荐专业用)

Pandoc 是格式转换领域的瑞士军刀,支持 40+ 种格式互转。

# 安装(Mac)
brew install pandoc
# 同时需要安装 LaTeX(用于 PDF 输出)
brew install --cask mactex-no-gui

# 基本转换
pandoc input.md -o output.pdf

# 带中文支持(必须指定字体,否则中文显示为方块)
pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V mainfont="PingFang SC" \
  -V geometry:margin=2cm

# 自定义 CSS 样式(通过 HTML 中间步骤)
pandoc input.md -o output.pdf \
  --pdf-engine=wkhtmltopdf \
  --css=style.css

优点:输出质量最高,格式控制精细,支持批量处理,适合生产环境。 缺点:需要安装 LaTeX 环境(约 4GB),中文配置有一定学习成本。

方案三:在线工具(临时需求)

MagicTools 内置导出功能,写好 Markdown 后一键导出 PDF,无需安装任何软件。适合偶发性需求。

Markdown → HTML

Markdown 转 HTML 是最"无损"的转换,因为 Markdown 本来就是 HTML 的简化写法。

静态博客生成

主流方案:Hugo、Jekyll、Gatsby、Astro。以 Hugo 为例:

# 一条命令把整个 articles/ 目录转成网站
hugo --source . --destination ./public

# 生成的 public/ 包含完整的 HTML 站点,可直接部署

这类工具会自动处理代码高亮、目录生成、相关文章推荐等功能。

单文件转换

# Pandoc 转换,嵌入完整样式(standalone 模式)
pandoc input.md -o output.html --standalone

# 引用外部样式文件
pandoc input.md -o output.html --standalone --css=github-markdown.css

转换结果可以直接在浏览器打开,或嵌入到现有网页中。

邮件模板

把 Markdown 内容转成 HTML 后,注意邮件客户端对 CSS 支持极差,需要把所有样式内联化:

# 使用 juice 工具内联 CSS
npm install -g juice
pandoc input.md -o temp.html --standalone --css=email.css
juice temp.html output-email.html

HTML → Markdown

这条路径最常用于:博客平台迁移(WordPress → Hexo/Hugo)、从网页提取内容归档、清洗爬虫抓取的内容。

在线工具(推荐)

MagicTools HTML 转 Markdown 支持三种输入方式:

  • 直接粘贴 HTML 代码
  • 输入 URL 自动抓取网页
  • 粘贴富文本(从网页复制后粘贴)

背后使用 Turndown 引擎,能正确处理表格、代码块、列表嵌套等复杂结构。

命令行批量转换

迁移整个 WordPress 博客时,命令行方案更高效:

# 安装 html2text(Python)
pip install html2text

# 单文件转换
html2text article.html > article.md

# 批量转换整个目录
for f in html-pages/*.html; do
  html2text "$f" > "markdown-output/${f%.html}.md"
done

转换质量注意事项

  • 导航栏、侧边栏、广告等无关内容需要手动清理
  • 图片 URL 会保留原始地址,需要另行下载并替换为本地路径
  • 复杂的嵌套表格可能丢失格式

PDF → Markdown

这是所有转换路径中质量最差的一条,原因是 PDF 本质上是"打印指令集",文字的逻辑顺序(段落、标题层级)并不直接存储在文件里。

OCR 方案(适合扫描版 PDF)

扫描版 PDF(纸质文档扫描而来)必须用 OCR:

  • Adobe Acrobat Pro:识别精度最高,支持中文,价格较贵
  • Microsoft Office Lens:免费移动端 APP,扫描 + OCR,输出 Word 后再转 Markdown
  • 在线 OCR:ilovepdf.com、smallpdf.com 提供免费的 OCR 转换

文字层 PDF 转换

如果 PDF 包含可选中的文字(不是扫描版),可以用:

# pdftotext(poppler 工具包)
pdftotext -layout input.pdf output.txt
# 注意:只能提取纯文本,标题层级和格式信息会丢失

# pdf2md 工具(更好保留结构)
npm install -g pdf2md-cli
pdf2md input.pdf > output.md

现实预期:PDF → Markdown 几乎必然需要手动修正,只适合"有比没有好"的场景。重要文档建议保留源文件(Word、Markdown 原稿)。

Word/DOCX → Markdown

企业环境中大量文档存在于 Word 格式,迁移到 Markdown 知识库时这条路径很常用。

Pandoc(推荐,质量最高)

# 基本转换
pandoc input.docx -o output.md

# 提取 Word 中的图片到 media/ 目录
pandoc input.docx -o output.md --extract-media=./media

# 批量转换
for f in *.docx; do
  pandoc "$f" -o "${f%.docx}.md" --extract-media="./media/${f%.docx}"
done

Pandoc 能正确识别 Word 的标题样式(Heading 1 → #,Heading 2 → ##),保留粗体、斜体、表格和图片。

Word 另存为(简单但质量差)

在 Word 中 File → Save As → Plain Text,只能保留纯文本,丢失所有格式。不推荐作为迁移方案。

各转换路径质量评级

转换路径 格式保真度 操作难度 推荐工具
Markdown → HTML ★★★★★ Pandoc / 在线工具
Markdown → PDF ★★★★☆ Pandoc + XeLaTeX
HTML → Markdown ★★★★☆ MagicTools / Turndown
Word → Markdown ★★★★☆ Pandoc
Markdown → Word ★★★☆☆ Pandoc
PDF → Markdown ★★☆☆☆ OCR + 手动修正
PDF → Word ★★★☆☆ Adobe / 在线工具

FAQ

Q:转换后格式乱了怎么办?

A:格式乱的原因通常有三种:第一,源文件格式不规范(如 Word 中用空行代替段落样式),解决方法是规范源文件再转;第二,转换工具不支持某些特性(如特殊字体、复杂表格),换一个工具试试;第三,编码问题(中文乱码),Pandoc 命令行加 --from=utf-8 或确保文件以 UTF-8 保存。如果是 PDF → 其他格式,格式乱基本是正常现象,需要手动修正。

Q:表格在转换中容易丢失怎么处理?

A:表格是格式转换最容易出问题的元素。处理建议:HTML → Markdown 转换时,优先使用 MagicTools 或 Turndown,它对表格支持最好;PDF 中的表格丢失基本无法自动恢复,只能手动重新写 Markdown 表格;Word 表格用 Pandoc 转换质量较好,但合并单元格会丢失合并信息;万不得已时,可以把表格截图,用图片替代——虽然不优雅,但总比格式乱好。

Q:免费工具能处理批量转换吗?

A:完全可以。Pandoc 是免费开源工具,可以写 Shell 脚本批量处理整个目录。Python 的 html2textmarkdownify 库也支持批量调用。对于 100 个以内文件的批量转换,命令行脚本配合 Pandoc 是最高效的方案,完全免费,且可以精确控制输出格式。超过 1000 个文件时可以考虑并行处理(xargs -P 4 或 Python 的 multiprocessing)以提升速度。

总结

文档格式转换没有银弹,但有规律可循:

  • 高频需求:Markdown ↔ HTML、Markdown → PDF,这两条路径工具成熟,质量可靠
  • 迁移需求:Word → Markdown、HTML → Markdown,Pandoc + 在线工具能处理绝大多数情况
  • 最难转:PDF → 任何格式,做好手动修正的心理准备

最重要的建议:保留原始格式文件。转换是临时操作,原稿才是资产。用 Markdown 写作,用 Git 版本管理,随时可以转换成任何你需要的格式,这才是最有弹性的文档工作流。

Published by MagicTools