必须用markdown preview enhanced(mpe)导出pdf:先按ctrl+k v打开mpe预览窗,确保mermaid、公式、代码块已渲染,再点右上角↓图标导出;文档顶部需加yaml front matter配置pdf_options与中文字体fallback,css仅支持基础属性。

别用 yzane.markdown-pdf —— 它在 2026 年已彻底失效,导出中文是方框、公式裸奔、Mermaid 图空白,不是你配错了,是底层依赖(PhantomJS / wkhtmltopdf)早已被弃用且不执行 JS。
必须用 markdown-preview-enhanced 且预览必须先渲染完成
MPE 导出 PDF 的本质是“截取当前预览窗口的 DOM 快照”,不是解析源码再生成。预览没渲染好,导出就是废稿:
- 快捷键必须是
Ctrl+K V(Windows/Linux)或Cmd+K V(macOS),不能用 VS Code 原生的Ctrl+Shift+V - 预览窗口里要能明确看到:
graph TD; A-->B已变成 SVG、$$\int x^2 dx$$已转为数学符号、代码块有语法高亮颜色 - 导出按钮只在 MPE 预览窗口右上角(↓ 图标),编辑器右键菜单里的 “Export to PDF” 是旧插件残留行为,点了也白点
pdf_options 和 stylesheet 必须显式声明在 YAML front matter 中
即使预览正常,PDF 仍可能用默认衬线字体、中文字体 fallback 失败,导致段落挤成一团、标题错位:
- 文档顶部必须加
---分隔的 YAML front matter,例如:---\npdf_options:\n format: 'A4'\n margin: {top:'20mm', right:'15mm', bottom:'20mm', left:'15mm'}\n stylesheet: ./style.css\n--- -
stylesheet路径必须是相对路径,且style.css文件得和 .md 在同一目录 - CSS 中只认基础属性:
@page、font-family、margin、line-height有效;flex、grid、position: fixed全部被忽略 - 中文字体至少写两个 fallback:
font-family: "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;
Puppeteer Chromium 下载失败?手动指定路径最稳
首次导出时 MPE 默认调用 Puppeteer 自动下载 Chromium(约 150MB),但内网拦截、杀毒软件、Gatekeeper 权限都可能导致卡住或报 Failed to launch chrome:
- 终端执行:
npx puppeteer install chromium(macOS/Linux)或npx puppeteer install chromium --platform=win64(Windows) - 安装完成后,在 VS Code 设置中填
markdown-preview-enhanced.puppeteerPath,值为绝对路径,例如:/Users/you/Library/Caches/puppeteer/chromium/mac-arm64-1234567/chrome-mac/Chromium - 不要依赖自动下载;手动装完再指定路径,比反复重试快得多
真正容易被忽略的是:MPE 的 PDF 导出不支持页眉页脚自定义、无目录生成、不处理跨页表格——如果这些是硬需求,就得切到 pandoc + xelatex,而不是在 CSS 里死磕 @page 规则。











