返回博客
6 分钟阅读
MarkdownToImage

Markdown 转 PDF 的 5 种方法对比(Pandoc、VSCode、在线工具)

基于当前官方资料,对比 5 种 Markdown 转 PDF 工作流:浏览器工具、Pandoc、VS Code Markdown PDF、浏览器打印与 md-to-pdf CLI,不再使用臆测的跑分数字。

Markdown 转 PDF 的 5 种方法对比(Pandoc、VSCode、在线工具)

一句话先说结论

单份文档优先考虑免安装的 /markdown-to-pdf;带引文和出版流程更适合 Pandoc;VS Code 与 CLI 更适合编辑器内操作和自动化。选择应取决于文档特性、可复现性与本地控制需求。

本文依据当前官方能力进行对比,不使用固定秒数或下载体积作为跑分,因为安装耗时与浏览器运行时体积会随系统和版本变化。

方法 1 —— 在线版 /markdown-to-pdf

适合:一次性转换、代码高亮、数学公式、流程图、零安装。

怎么做:打开 /markdown-to-pdf,粘贴,点 PDF。

安装与首次运行:取决于操作系统、PDF 引擎、缓存状态和文档复杂度,请在自己的环境中实测。

优点:无需本地安装,可在浏览器使用;支持代码高亮、KaTeX、Mermaid、表格、图片和任务列表。免费输出带水印,登录后的免费用户目前总计有 5 次无水印导出。

缺点:单文件 1 MB 上限。一次处理一个文件 —— 批量任务请看 批量转换 Markdown 文件为 PDF

何时使用:大多数 的一次性 Markdown → PDF 转换。

方法 2 —— Pandoc

适合:学术论文、自定义 LaTeX 模板、参考文献引用、一份源文件输出多种格式(PDF + DOCX + EPUB)。

怎么做

brew install pandoc
brew install --cask basictex  # or mactex (platform-dependent)
pandoc input.md -o output.pdf

安装与首次运行:取决于操作系统、PDF 引擎、缓存状态和文档复杂度,请在自己的环境中实测。

优点:久经考验,可脚本化,LaTeX 模板灵活无上限。原生支持参考文献(--bibliography)。可离线运行。书本级排版品质。

缺点:LaTeX 安装包 依平台而定。默认输出是学术论文样式。自定义模板很难。代码高亮要单独 --syntax-highlighting 参数,且按 Web 标准看相当过时。Mermaid 需要插件。

何时使用:你要出书、写论文(带参考文献)、或者要维护三个以上 PDF 模板并希望它们进版本控制。

方法 3 —— VSCode「Markdown PDF」插件

适合:每天都在 VSCode 里写 Markdown 的人。

怎么做:装 yzane 的「Markdown PDF」插件,右键文件 → Markdown PDF: Export (pdf)。

安装与首次运行:取决于操作系统、PDF 引擎、缓存状态和文档复杂度,请在自己的环境中实测。

优点:在你已经在写代码的地方一键导出。可以通过用户设置改 CSS。默认样式可用。

缺点:第一次导出慢,因为要下载 Chromium。PDF 视觉风格只能改 CSS,自由度有限。开箱不支持 KaTeX —— 需要先装一个 Markdown+Math 插件来渲染。Mermaid 块会按代码渲染,不会变成图。

何时使用:你每周要写 5 份以上 PDF 且编辑器是 VSCode。

方法 4 —— 浏览器打印 → 另存 PDF

适合:Markdown 已经在浏览器里渲染好的页面(GitHub README、GitLab Wiki、文档站)。

怎么做:⌘+P 或 Ctrl+P → 「另存为 PDF」。

安装与首次运行:取决于操作系统、PDF 引擎、缓存状态和文档复杂度,请在自己的环境中实测。

优点:已经在那儿了,不用装。任何渲染好的 HTML 都能用。

缺点:分页会以无法预测的方式切断表格和代码块。代码高亮在 Firefox 打印时容易丢色。默认页眉页脚是 URL + 页码,通常需要手动关掉。如果源页面没渲染 KaTeX 或 Mermaid,PDF 里也不会有。

何时使用:你现在就要一份某个已经渲染好的 Markdown 页面的 PDF,且不太在意品相。

方法 5 —— md-to-pdf(npm CLI)

适合:构建流水线、CI/CD、自动化文档。

怎么做

npm install -g md-to-pdf
md-to-pdf input.md

安装与首次运行:取决于操作系统、PDF 引擎、缓存状态和文档复杂度,请在自己的环境中实测。

优点:可脚本化。每个文档可以用 YAML front-matter 改主题。watch 模式实时预览。装好之后离线可用。

缺点:依赖 Node + Chromium。主题定制只能 YAML + CSS,表达力不如 Pandoc/LaTeX。开箱不支持 Mermaid,需要 markdown-it 插件。

何时使用:你的文档站在 CI 里构建 PDF;你希望 PDF 跟源文件一起进版本控制。

注意:避开旧的 markdown-pdf 包(不带连字符)—— 自 2019 年后未维护,有已知安全公告。md-to-pdf 是后续维护版本。

总览对比

方案安装体积首份 PDF代码高亮数学公式Mermaid适合
/markdown-to-pdfNoneBrowser requestyesyes (KaTeX)yesOne-offs
PandocPandoc + PDF engineSetup-dependentyesyesfilterBooks, papers
VS Code Markdown PDFExtension + rendererSetup-dependentyesextension-dependentnoEditor users
Browser printNoneBrowser requestvariessource-dependentsource-dependentRendered pages
md-to-pdf CLINode.js + browser runtimeSetup-dependentyesconfigurablepluginCI/CD

你到底应该选哪种?

  • 大多数读者/markdown-to-pdf,大多数 的场景这就是答案。
  • 写学术论文带文献的 → Pandoc。
  • 每天都在 VSCode → VSCode 插件。
  • DocOps / CI 构建md-to-pdf CLI。
  • 现在就要 GitHub README 的 PDF → 浏览器打印,接受粗糙。

Markdown → PDF 工具最大的诱惑是过度工程。要转一份文档就别装东西。要转 1000 份就上 CLI 自动化。中间地带很少能正当化用 Pandoc 来给非学术场景用。

常见问题

哪种方法保留代码高亮最好?

基于 headless Chromium 的几种(/markdown-to-pdf、VSCode 插件、md-to-pdf CLI),它们都通过真实 Chromium 渲染,所以任何 highlight.js / Prism 主题都能完整带过去。Pandoc 的 --syntax-highlighting 按 Web 标准看相当过时。深入看:保留代码高亮的 Markdown 转 PDF

哪种支持批量转换?

CLI 天然支持(md-to-pdf chapter*.md)。如果用网页工具做批量,请看 批量把 Markdown 文件转 PDF

为什么不用 markdown-pdf 而用 md-to-pdf

markdown-pdf(不带连字符)自 2019 年后未维护,有已知安全公告。md-to-pdf 是当前维护中的方案。

哪种处理中文 / CJK 字体最好?

托管的 /markdown-to-pdf 使用服务端字体环境;本地 Chromium 工具使用其运行环境中的字体;Pandoc 配 XeLaTeX 通常需要显式指定 CJK 字体(如 mainfont:)。发布前务必用实际字符测试。

规模化跑哪种最便宜?

每周 100+ 份 PDF,CI 里跑 md-to-pdf 基本免费(只是算力)。偶尔用,浏览器版零成本。Pandoc 本身免费,但维护模板的工程时间是隐性成本。

写在最后

该用哪种取决于你的用量。一份 PDF → 浏览器工具。1000 份 PDF → CI 里的 CLI。带文献的书 → Pandoc。在没尝过轻量方案的痛之前,别上重武器。

本次更新核对的资料

上文的产品限制与命令已按以下当前一手资料核对:

现在试一下

打开 MarkdownToImage 渲染 Markdown,再按工作流选择输出格式。批量自动化前,先用一份有代表性的文档验证。

Markdown To Image | Markdown 转 PDF 的 5 种方法对比(Pandoc、VSCode、在线工具) | MarkdownToImage