vscode内置markdown预览不支持导出pdf/html,需依赖扩展或工具;markdown preview enhanced导出失效主因是phantomjs停更或puppeteer未正确配置;推荐用md2pdf命令行工具,基于playwright、安装即用、支持css/toc/公式。

VSCode 的 Markdown 实时预览本身不支持导出 PDF/HTML——它只是个只读预览器,导出必须借助扩展或外部工具。
Markdown Preview Enhanced 导出功能失效的常见原因
很多人装了 Markdown Preview Enhanced 却点不动「Export to PDF」按钮,根本原因是:它默认依赖本地 PhantomJS 或 Puppeteer,而 PhantomJS 已停更且与新版系统/Node 不兼容;Puppeteer 则需手动安装并配置 puppeteerPath。
- 检查是否在设置中启用了
markdown-preview-enhanced.enableScriptExecution(导出需启用) - 确认
markdown-preview-enhanced.puppeteerPath指向的是可执行二进制文件(如/node_modules/puppeteer/.local-chromium/...下的chrome-linux/chrome),不是node_modules/puppeteer目录本身 - Windows 用户注意路径分隔符:VSCode 设置里必须用正斜杠
/或双反斜杠\,单反斜杠会解析失败
用 md2pdf 命令行导出更稳定(推荐替代方案)
如果你只需要可靠导出,md2pdf 是轻量、现代、无头浏览器依赖的方案。它基于 Chromium(通过 Playwright),安装即用,不污染全局 Node 环境。
- 安装:
npm install -g md2pdf(或局部安装后用npx md2pdf) - 导出 PDF:
md2pdf input.md --css custom.css --output output.pdf - 导出 HTML:
md2pdf input.md --output output.html --no-browser - 支持自定义 CSS(如页眉页脚、代码高亮主题)、TOC 生成、数学公式(KaTeX)
VSCode 内置预览 vs 扩展预览的关键区别
VSCode 自带的 Ctrl+Shift+V 预览是纯前端渲染,不执行 JS、不加载本地图片( 可能显示为红叉)、不支持 Mermaid 流程图;而 Markdown Preview Enhanced 和 Markdown All in One 的预览面板可启用脚本、Mermaid 渲染、甚至 LaTeX 公式(需配合 MathJax/KaTeX)。
- 内置预览适合快速查看结构,不建议用于最终效果校验
- 扩展预览开启
enableScriptExecution后,可能因执行任意 JS 引发安全风险(尤其打开不受信的 .md 文件) - Mermaid 图表在
Markdown Preview Enhanced中默认启用,但在Markdown All in One中需手动开启markdown.extension.mermaid.enabled
导出环节最常被忽略的是资源路径处理——相对路径在预览中正常,但导出时往往找不到图片/CSS。务必统一用项目根目录为基准,或在导出命令中显式指定 --cwd。另外,数学公式和 Mermaid 渲染质量高度依赖所选引擎(KaTeX vs MathJax,Puppeteer vs Playwright),换工具前先验证你的文档关键元素能否正确呈现。











