跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

vscode如何导出Markdown为PDF

Markdown Preview Enhanced(MPE)是VS Code中导出PDF最稳定插件,支持Mermaid、自定义CSS及真实渲染;需先预览再右键导出,推荐配置YAML主题与字体fallback;pandoc为更可控的替代方案。 用 Markdown Preview Enhanced 插件直接导出 PDF VS Code 原生不支持 Markdown 导出 PDF,必须依赖插件。目前最稳定、兼容性最好、中文支持最到位的是
Markdown Preview Enhanced
(简称 MPE),不是
Markdown PDF
那类老插件——后者早就不维护了,导出时容易乱码、丢样式、不支持 Mermaid 图表。 安装后右键预览窗口 → Export to PDF ,或快捷键
Ctrl+K Ctrl+E
(Windows/Linux)/
Cmd+K Cmd+E
(macOS)。它底层调用的是 Puppeteer,所以导出的是真实渲染效果,包括代码块高亮、表格边框、自定义 CSS 等。 必须先打开 Markdown 文件,再按
Ctrl+Shift+V
预览,否则右键菜单里没有导出选项 导出前建议在文件顶部加 YAML front matter 指定主题,比如:
---\ntheme: github\n---
,否则默认用「white」主题,打印出来是白底黑字但无阴影/间距,显得发闷 如果用了自定义 CSS(如
style.css
),要确保路径写对,且在 front matter 里通过
css: ./style.css
显式引入,MPE 不会自动加载同目录下的 CSS 导出失败常见报错和对应解法 最常卡在
Puppeteer not found
或
Failed to launch chrome
——这不是你没装 Chrome,而是 MPE 自带的 Puppeteer 版本太老,跟新版系统或 Chromium 冲突。 先运行
npm install -g puppeteer
(需提前装 Node.js),再在 VS Code 设置里把
markdown-preview-enhanced.puppeteerPath
改成你全局安装的路径,例如:
/usr/local/lib/node_modules/puppeteer/.local-chromium/...
Mac 上遇到
Developer cannot be verified
弹窗:去「系统设置 → 隐私与安全性」拉到底,点「仍要打开」;Windows 上杀毒软件可能拦截 Chromium 进程,临时禁用试试 中文显示为方框:说明字体没 fallback。在自定义 CSS 里加一行:
@font-face { font-family: 'pdf-font'; src: local('PingFang SC'), local('Microsoft YaHei'), local('sans-serif'); }
,然后给
body
设
font-family: 'pdf-font'
用命令行 + pandoc 是更可控的替代方案 如果你要批量处理、加页眉页脚、控制页边距,或者 MPE 导出结果总差那么一两点(比如目录层级错乱),直接上
pandoc
更靠谱。它不依赖浏览器,纯文本流处理,稳定、可脚本化。 VSCode 1.118 微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。 下载 先装 pandoc:
brew install pandoc
(macOS)、
scoop install pandoc
(Windows Scoop)、或去 官网下载 基础导出命令:
pandoc input.md -o output.pdf --pdf-engine=xelatex
,必须用
xelatex
(不是 pdflatex),否则中文直接挂 想保留 GitHub 风格样式?加
--css=github.css
;要生成目录?加
--toc --toc-depth=3
;页边距调大?加
--variable=geometry:"top=1in, bottom=1in, left=1in, right=1in"
注意:pandoc 不解析 Mermaid 或 LaTeX 数学公式(除非额外装
mermaid-cli
和
texlive
),MPE 能做的,它不一定能原样复现 导出后 PDF 字体发虚、代码块模糊? 这是 Chromium 渲染 PDF 时默认用了 bitmap 字体渲染,尤其在等宽字体(如 Fira Code、JetBrains Mono)上特别明显。不是你的 PDF 阅读器问题,是导出环节就埋下了。 MPE 用户:在设置里把
markdown-preview-enhanced.scale
改成
2
(默认是
1.5
),再导出,清晰度立竿见影 pandoc 用户:改用
weasyprint
引擎(
pandoc input.md -o output.pdf --pdf-engine=weasyprint
),它基于 WebKit,字体渲染更接近浏览器,但不支持 LaTeX 公式 终极提示:别用 macOS 预览.app 直接「打印 → 另存为 PDF」,它会二次压缩字体轮廓,模糊加倍;用 Adobe Acrobat 或 Chrome 打印 PDF 才算真正“无损” PDF 导出看着简单,其实每一步都在字体、引擎、CSS 三者之间找平衡。最容易被忽略的是:MPE 的「导出」和「打印预览」走的是两套渲染逻辑,前者用 Puppeteer 截图,后者用浏览器原生打印 API——同一份文档,两个按钮点出来可能完全不同。

相关文章