sublime text导出彩色pdf的唯一稳定路径是exporthtml插件生成html后用chrome打印;需正确安装exporthtml(非exporthtml2)、重启软件、设置语法与主题,并在chrome中启用background graphics及自定义中文字体。

Sublime Text 没有原生导出彩色代码 PDF 的能力,所有“导出为 PDF”操作都必须经过 HTML 中转或调用外部命令行工具;真正能保留当前配色、行号、缩进和语法高亮的稳定路径,只有 ExportHtml + Chrome 打印。
ExportHtml 插件怎么装和基础配置
别搜“ExportHtml2”或“ExportHtml for ST4”,Package Control 里只认 ExportHtml(无后缀、无数字)。安装后不重启,命令面板里搜不到 ExportHtml: Export 是常见失败信号。
- 按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入Install Package→ 回车 → 等列表加载完成 → 输入ExportHtml→ 选中安装 - 安装完立刻重启 Sublime,否则插件命令不注册
- 打开一个已设好语法(如
Python、JavaScript)的文件,再调命令面板搜ExportHtml: Export,才能触发 - 配置面板弹出后必须勾选:
full_page(否则只输出代码块,无样式)、Use current color scheme(继承你正在用的主题)、Include line numbers(如需行号)
Chrome 打印 PDF 时关键设置
生成的 export.html 默认用系统默认浏览器打开,但 Safari / Edge 对 @media print 支持差,打印出来常丢背景色、行号错位、字体糊成一片——务必用 Chrome 打开再操作。
- 用 Chrome 打开生成的 HTML 文件 →
Ctrl+P(Win/Linux)或Cmd+P(macOS) - 打印设置里三项必调:关闭页眉页脚、勾选 Background graphics、缩放设为 100%
- 别选 “Fit to page” 或 “Shrink to fit”,小字号会被强制压缩,抗锯齿失效,中文尤其发虚
- 如果仍模糊,临时关掉
Background graphics再试一次——部分字体(如Fira Code)在开启该选项时反而渲染异常
中文字体糊、乱码、缺字怎么修
ExportHtml 默认 font-family 是 Consolas, 'Liberation Mono', Menlo, monospace,全不含中文字体,导致中文 fallback 到系统默认点阵字体或极小字号,PDF 里看着像马赛克。
- 用文本编辑器(如 VS Code 或系统自带记事本)打开生成的
export.html - 搜索
font-family:,把它替换成:font-family: 'Fira Code', 'SFMono-Regular', 'Consolas', 'Microsoft YaHei', 'STHeiti', sans-serif; - macOS 用户确认已安装
STHeiti或Noto Sans CJK SC(brew install --cask font-noto-sans-cjk) - Windows 用户确认
Microsoft YaHei存在(Win10/11 默认自带,Win7 需手动安装) - 改完保存,Chrome 里刷新页面再打印
为什么 pygmentize + wkhtmltopdf 不推荐日常用
它适合 CI 批量处理或脚本化场景,但对单次导出来说,容易翻车且效果不如 ExportHtml:它不读取 Sublime 当前的 .sublime-color-scheme,也不支持括号匹配高亮、自定义 scope 着色等编辑器特有功能,导出的只是 Pygments 的通用语法高亮。
- 命令里漏掉
--enable-local-file-access,@font-face加载失败,字体全回退到默认 - pygmentize 的
style=monokai和你 Sublime 里看到的Monokai主题不是一回事,颜色值、scope 覆盖范围都不同 - 要让中文正常,还得额外写 CSS 并指定
@font-facesrc,比改 HTML 里的font-family复杂得多 - 除非你每天导出几十个文件、且不需要编辑器级高亮一致性,否则没必要绕这圈
Background graphics,或者 macOS 上没装中文字体,PDF 就会无声无息地变灰、变虚、缺字——这些细节不手动验证一遍,就等于没做完。











