Sublime Text 本身不支持导出高亮代码为图片,必须依赖 ExportHtml 插件或 pygmentize 工具;跳过二者会导致丢色、断行、中文字体失效。ExportHtml 导出 PNG 需配置 export_format、font_face、font_size、antialias、background_opacity 五项,且导出前须手动切换正确语法并执行 Export to Image 命令。

Sublime Text 本身不提供「导出高亮代码为图片」的能力,所有看似一键截图的功能,背后都是插件调用渲染引擎或浏览器快照实现的。跳过 ExportHtml 或 pygmentize 这两套路径,结果必然丢色、断行、中文字体失效——不是模糊,就是纯黑图。
ExportHtml 插件导出 PNG 必须配这五项
它是最稳的编辑器内方案,但默认配置几乎没法用。打开 Preferences → Package Settings → ExportHtml → Settings – User,填入以下最小必要项:
-
"export_format": "png"(别漏引号,也别写成image_format) -
"font_face": "Fira Code"(必须是系统已安装的字体家族名,macOS 用fc-list :family查,Windows 看字体册显示全名) -
"font_size": 14(小于 12 在高分屏上基本看不清) -
"antialias": true(关了就发虚,尤其 macOS Retina / Windows 缩放 125%+) -
"background_opacity": 0.95(深色主题下太低会显灰蒙,太高又像截图)
导出前务必手动点击右下角语法名称(如 Plain Text),切到 Python 或 JavaScript;否则高亮直接丢失。执行命令时选 ExportHtml: Export to Image,不是 Export to HTML。
Chrome 打印 HTML 为 PDF 怎么不丢色
ExportHtml 导出的 HTML 文件本身可读性好、易调试,但直接双击用 Chrome 打开再打印,常出现高亮变灰、中文字体糊成一片。关键在三处设置:
- 打印对话框里必须勾选 Background graphics(不勾就全灰)
- 页眉页脚必须关掉(否则页码覆盖代码)
- 缩放选
100%或Fit,别用Shrink to fit(后者会强制压缩字体导致锯齿)
若中文字体仍发虚,在导出的 HTML 文件里搜索 font-family,替换成:font-family: 'Fira Code', 'Microsoft YaHei', monospace;。深色主题背景太暗?在 ExportHtml 的用户设置里加 "html_style": "inline_dark"。
pygmentize 命令行导出要绕开两个坑
适合写脚本、CI 自动化或临时单文件生成,但它不读取 .sublime-color-scheme,只认 Pygments 内置风格(如 monokai、vs),视觉接近但不一致。
- 基础命令:
pygmentize -f png -O style=monokai,fontname="Fira Code",fontsize=14,linenos=1 -o output.png input.py - 文字边缘锯齿严重?加
fontscale=1.0,且确保fontsize是整数(如14,不能是14.5) - 中文乱码?在命令末尾加
-O encoding=utf-8
它无法还原 Sublime 特有高亮(比如括号匹配色、自定义 scope 着色),真要严格对齐编辑器所见,只能走 ExportHtml 路径。
CodeScreenshot 插件失败大概率卡在这三点
它依赖 Chromium headless 截图,不是纯 Sublime 渲染,所以失败链路更长。常见报错:黑图、空文件、控制台无提示但没输出。
- GPU 加速必须开:
"hardware_acceleration": "gpu"(设成"none"就必然黑图) - 文件必须先保存,且路径不能含中文或空格(
D:\My Projects\code.png→ 静默失败,应改D:\code\output.png) - 系统缩放 ≠ 插件缩放:Win 125% 缩放需在插件设置里加
"scale_factor": 125;macOS Retina 则可能需要"dpi_scale": 2.0
最关键的是浏览器路径必须指向可执行二进制文件,比如 macOS 上填 /opt/homebrew/bin/chromium,而不是 /Applications/Chromium.app;Linux 下若提示 Failed to move to new namespace,得加 "browser_args": ["--no-sandbox", "--disable-gpu"]。
真正容易被忽略的,是“语法识别”和“字体渲染”这两个环节——前者决定高亮有没有,后者决定图清不清楚。所有插件都跑在这两块地基上,地基松了,再好的参数也导不出可用图。

















