sublime text 本身不提供 markdown 转 pdf 功能,所有导出均依赖外部工具链;export to pdf 菜单项灰色主因是未安装 markdownpreview 插件、文件语法未设为 github flavored markdown、pandoc 或 wkhtmltopdf 未安装或路径配置错误。

Sublime Text 本身不提供 Markdown 转 PDF 功能,所有导出行为都依赖外部命令行工具;菜单里 Export to PDF 灰掉、点击无反应、生成乱码 PDF,90% 是因为 pandoc 或 wkhtmltopdf 没装好,或 Sublime 找不到它们。
为什么 Export to PDF 菜单项是灰色的?
这不是插件没启用,而是触发条件全部缺失:
- 当前文件语法没设为
GitHub Flavored Markdown(右键 →Set Syntax→Markdown (GFM)) -
MarkdownPreview插件未安装,或装的是已废弃的MarkdownPDF(它硬编码调用淘汰多年的phantomjs,2026 年起完全无法运行) - 终端运行
pandoc --version或wkhtmltopdf --version报command not found,说明系统根本没装 - 即使装了,Sublime 的环境变量也找不到——Mac 上
brew install pandoc后真实路径常是/opt/homebrew/bin/pandoc,但 Sublime 默认只查/usr/bin
用 MarkdownPreview + wkhtmltopdf 最省事
适合技术笔记、会议纪要类文档,不依赖 LaTeX,编译快、体积小,但对复杂 CSS(如 flex 布局、自定义分页)支持有限:
- 去 wkhtmltopdf.org/downloads.html 下载对应系统版本;Windows 安装时务必勾选「Add to system PATH」;macOS/Linux 确保
/usr/local/bin已在 shell 的$PATH中 - 打开
Preferences → Package Settings → Markdown Preview → Settings,填入:{ "enabled_parsers": ["markdown"], "enable_pdf_export": true, "pdf_converter": "wkhtmltopdf", "wkhtmltopdf_path": "" }wkhtmltopdf_path留空即可(插件会自动查$PATH);若填了绝对路径,请确保指向可执行文件,例如:/usr/local/bin/wkhtmltopdf或C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe
用自定义 .sublime-build + pandoc 控制排版质量
需要目录、页眉页脚、数学公式、精确中文字体控制?必须走 pandoc + lualatex 路线,但代价是安装大、编译慢、字体配置不能漏:
- 菜单 →
Tools → Build System → New Build System…,粘贴并保存为Markdown2PDF.sublime-build -
"cmd"必须写pandoc全路径(如/opt/homebrew/bin/pandoc),不能只写"pandoc" -
"selector"必须是"source.gfm",否则.md文件里按Ctrl+B不触发 -
"path"填你本地pandoc所在的所有可能路径,用英文冒号分隔,例如:"/opt/homebrew/bin:/usr/local/bin:/usr/bin" - 中文 PDF 乱码?不是字体没装,是
pandoc没被告知用哪个字体;加参数:--pdf-engine=lualatex和-V mainfont=Noto Sans CJK SC(macOS/Linux),Windows 可换为SimSun或Microsoft YaHei
导出 HTML 再打印为 PDF 是最省事的路径
安装 MarkdownPreview 后,用 Shift+Cmd+P(Mac)或 Ctrl+Shift+P(Win/Linux)输入 Markdown Preview,回车预览;在浏览器预览页右键 → 打印 → 选择“另存为 PDF”:
- 这条路绕过所有 LaTeX 配置、字体声明和路径问题
- 适合含代码块、需快速交付的文档
- Chrome 打印时务必勾选
Background graphics,否则高亮背景全丢;关闭页眉页脚,避免每页顶上多一行 URL
真正卡住人的从来不是 Sublime 设置,而是以为“装了插件就等于装了工具”。pandoc 和 wkhtmltopdf 是两个独立程序,得自己装、自己验证、自己告诉 Sublime 去哪找。中文 PDF 乱码往往不是字体没装,而是 pandoc 参数里漏了 -V mainfont=... 这一行——这个细节容易被跳过,但缺了就白配。











