Markdown 转 PDF 的 5 种方法对比(Pandoc、VSCode、在线工具)
用同一份示例文档比较浏览器、Pandoc、VS Code、浏览器打印和 md-to-pdf,结合批量 ZIP、书籍合并、字体与部署要求选出合适工作流。保留安装命令和方法对照表,在下载的 PDF 中检查任务标记、表格边框和文字选择。
本页内容
01一句话先说结论02方法 3 —— VSCode「Markdown PDF」插件单份文档优先考虑免安装的 /markdown-to-pdf;带引文和出版流程更适合 Pandoc;VS Code 与 CLI 更适合编辑器内操作和自动化。选择应取决于文档特性、可复现性与本地控制需求。
本文依据当前官方能力进行对比,不使用固定秒数或下载体积作为跑分,因为安装耗时与浏览器运行时体积会随系统和版本变化。
适合:一次性转换、代码高亮、数学公式、流程图、零安装。
怎么做:打开 /markdown-to-pdf,粘贴,点 PDF。
安装与首次运行:取决于操作系统、PDF 引擎、缓存状态和文档复杂度,请在自己的环境中实测。
优点:无需本地安装,支持代码高亮、KaTeX、Mermaid、表格、图片与任务列表。登录后可累计获得 5 次无水印浏览器导出,用完后仍可无限次导出带水印文件。Creator 为每月 9 美元,包含不限次数的浏览器无水印导出;1 美元通行证提供 1 次浏览器无水印导出。API 积分单独计算。
范围:单文档 PDF 页面输入上限为 1 MB。多个文件可用独立的付费批量导出工具,得到包含独立输出的 ZIP。限制与合成一份 PDF 的方案见批量指南。
何时使用:大多数 的一次性 Markdown → PDF 转换。
适合:学术论文、自定义 LaTeX 模板、参考文献引用、一份源文件输出多种格式(PDF + DOCX + EPUB)。
怎么做:
brew install pandoc
brew install --cask basictex # or mactex (platform-dependent)
pandoc input.md -o output.pdf
优点:久经考验,可脚本化,LaTeX 模板灵活无上限。原生支持参考文献(--bibliography)。可离线运行。书本级排版品质。
缺点:需要配置 PDF 引擎、字体与模板。用 --syntax-highlighting 明确选择语法主题,并用选定引擎检查结果。Mermaid 可先转成图片,或配置合适的预处理流程。
何时使用:你要出书、写论文(带参考文献)、或者要维护三个以上 PDF 模板并希望它们进版本控制。
适合:每天都在 VSCode 里写 Markdown 的人。
怎么做:装 yzane 的「Markdown PDF」插件,右键文件 → Markdown PDF: Export (pdf)。
优点:从编辑器导出,可配置 CSS 和代码高亮。当前 README明确支持 Mermaid 与 KaTeX;请核对实际安装版本和配置。
缺点:扩展需要兼容的浏览器运行环境,设置与 CSS 会影响结果。编辑器预览扩展不一定参与 PDF 导出;请在下载文件中测试公式、Mermaid、字体与分页。
适用情况:你已经在 VS Code 中编写和审阅源稿,希望导出设置也留在同一工作流。
适合:Markdown 已经在浏览器里渲染好的页面(GitHub README、GitLab Wiki、文档站)。
怎么做:⌘+P 或 Ctrl+P → 「另存为 PDF」。
优点:已经在那儿了,不用装。任何渲染好的 HTML 都能用。
缺点:输出取决于源页面的打印 CSS 与打印设置。请检查背景、代码颜色、页眉页脚及分页。公式和图表必须已经在网页中正确渲染。
何时使用:你现在就要一份某个已经渲染好的 Markdown 页面的 PDF,且不太在意品相。
适合:构建流水线、CI/CD、自动化文档。
怎么做:
npm install -g md-to-pdf
md-to-pdf input.md
优点:可脚本化。每个文档可以用 YAML front-matter 改主题。watch 模式实时预览。装好之后离线可用。
缺点:需要 Node.js 和浏览器运行环境。外观通过配置与 CSS 定制。请确认所需 Markdown 扩展的支持;图表不能渲染时,先把它导出为图片再转换。
何时使用:你的文档站在 CI 里构建 PDF;你希望 PDF 跟源文件一起进版本控制。
安装时使用链接文档中的准确包名。md-to-pdf 与 markdown-pdf 是不同的包;请检查选定版本及其安全公告。
| 方法 | 本地准备 | 首次导出 | 代码高亮 | 公式 | Mermaid | 适用任务 |
|---|---|---|---|---|---|---|
/markdown-to-pdf | 无需安装 | 浏览器请求 | 支持 | KaTeX | 支持 | 单份文档 |
| Pandoc | PDF 引擎与字体 | 取决于环境 | 语法主题 | 取决于引擎 | 预处理 | 书籍与引用 |
| VS Code Markdown PDF | 扩展与渲染器 | 取决于环境 | 可配置 | KaTeX | 支持;配置运行环境 | 编辑器工作流 |
| 浏览器打印 | 已渲染的源页面 | 打印对话框 | 取决于源页面 | 取决于源页面 | 取决于源页面 | 已有网页 |
md-to-pdf CLI | Node.js 与浏览器环境 | 取决于环境 | 可配置 | 检查配置 | 准备图片 | CI 构建 |
- 大多数读者 →
/markdown-to-pdf,大多数 的场景这就是答案。 - 写学术论文带文献的 → Pandoc。
- 每天都在 VSCode → VSCode 插件。
- DocOps / CI 构建 →
md-to-pdfCLI。 - 现在就要 GitHub README 的 PDF → 浏览器打印,接受粗糙。
文档需要定时或随提交重建时,选择自动化;偶尔处理一组文件,可用浏览器批量工具省去本地配置。Pandoc 解决的是另一类问题:有章节顺序、引用与受控模板的一份出版文档。
哪种方法保留代码高亮最好?
Chromium 路径在主题和打印设置匹配时可以保留网页式高亮;Pandoc 使用自己的语法主题设置。请比较同一份代码样例,不要假定主题可以原样迁移。详见代码高亮指南。
哪种支持批量转换?
多文件请打开批量导出:这是付费工具,每次最多接收 15 个 Markdown 文件,下载的 ZIP 中每个输入对应一个输出。Creator 每月含 20 次运行。选择 PDF 可得到多份独立 PDF;需要合成一份文档时使用 Pandoc。
为什么不用 markdown-pdf 而用 md-to-pdf?
本文使用上方链接的 md-to-pdf。包名不能互换;选择其他工具时请对照其文档、版本状态与安全公告。
哪种处理中文 / CJK 字体最好?
托管的 /markdown-to-pdf 使用服务端字体环境;本地 Chromium 工具使用其运行环境中的字体;Pandoc 配 XeLaTeX 通常需要显式指定 CJK 字体(如 mainfont:)。发布前务必用实际字符测试。
规模化跑哪种最便宜?
请比较总运行成本:浏览器套餐、按需购买的 API 积分、CI 算力、字体与模板维护。Creator 浏览器订阅不包含 API 渲染积分。按真实用量选择,不要用一个通用周频率阈值决定。
按交付物选择:浏览器里的单份文档、批量工具生成的 ZIP、CI 的周期构建,或 Pandoc 生成的含引用整本文档。让候选工具处理同一份示例,再检查实际 PDF。
# Document export test
## Handoff checklist
- [x] Headings
- [x] Table layout
- [x] Code formatting
| Check | Expected result |
|:--|:--|
| Body text | Readable at page width |
| Links | Retained in PDF |
> Demo content for comparing export methods.
让候选方法处理这份演示输入。此处展示的是产品导出示例,不是五种工具的实测跑分。选择工作流前,请在各自 PDF 中检查表格边框、任务标记与文字选择。
上文的产品限制与命令已按以下当前一手资料核对:
打开 MarkdownToImage 渲染 Markdown,再按工作流选择输出格式。批量自动化前,先用一份有代表性的文档验证。