Markdown PDF插件导出简历易排版崩坏,因默认无中文字体fallback、忽略自定义CSS与front matter;需配置resume.css指定Noto Sans CJK等字体、调整页边距与链接样式,并确保预览激活后右键导出。

用VSCode写Markdown简历,想一键导出成PDF?Markdown PDF插件确实是那个最轻量、最直接的选择。但先别急着点导出,这里有个坑几乎人人都会踩:**用默认配置导出简历类文档,十有八九会失败**。字体缺失、中文乱码、页边距过大、代码块内容被截断……这些问题全指向同一个根源:插件默认只调用系统字体,且没有为中文字体设置任何后备方案。
为什么 Markdown PDF 导出的简历总是排版崩坏
要理解问题所在,得先看看这个插件是怎么工作的。它底层其实是调用Chrome浏览器来渲染HTML,然后再转换成PDF。问题就在于,它的CSS渲染链路过于“极简”了:既不会加载你写在Markdown里的块,也会忽略YAML front matter中那些关于PDF的配置选项,更不会自动帮你声明中文字体。结果就是,下面这些糟心场景反复上演:
- 打开PDF,发现标题和正文全变成了方框(缺少思源黑体、Noto Sans CJK这类中文字体)。
- 代码块横向滚动条神秘消失,关键内容被硬生生截断,看不全。
- 默认页边距宽达2厘米,一页纸根本塞不下多少内容,导致经历描述被拆得七零八落。
- 导出后,所有链接的下划线不见了,颜色也变成难以辨认的灰色(这是Chrome打印模式默认禁用了部分样式导致的)。
markdown-pdf.styles 必须指向一个真实存在的 CSS 文件
解决上述问题的核心钥匙,是一个叫做markdown-pdf.styles的配置项。但请注意,光在设置里写个路径名可不行,你必须确保这个路径指向一个真实存在、且包含有效CSS规则的物理文件。对于简历导出来说,下面这三行CSS规则堪称救命稻草:
body {
font-family: "Noto Sans CJK SC", "Source Han Sans CN", "Microsoft YaHei", sans-serif;
line-height: 1.6;
margin: 0.8cm;
}
code { font-size: 0.9em; }
a { color: #2563eb !important; text-decoration: underline; }
建议你将这段代码保存为项目根目录下的一个文件,比如就叫resume.css。然后,在VSCode的设置中(通常是.vscode/settings.json),进行如下配置:
"markdown-pdf.styles": ["./resume.css"]
这里有个细节需要警惕:路径开头的./这个相对路径前缀不能省略。如果把resume.css文件放错了位置(例如误放在了.vscode/子目录里),插件会直接静默忽略它,不报错也不生效,让你白白折腾。
导出前必须手动触发预览,否则右键菜单不出现
这是最容易让人卡住的一步:即便你配置好了所有设置,在VSCode的纯编辑器视图里,右键菜单中也可能根本找不到Export to PDF这个选项。你需要先让Markdown文件的“预览模式”被激活:
- 首先,打开你的
resume.md文件。 - 然后,按下
Ctrl+Shift+V(Windows/Linux)或Cmd+Shift+V(macOS),在右侧唤出预览窗口。 - 此时,**将鼠标移动到右侧的预览区域内部再点击右键**(注意,不是编辑器空白处,也不是文件标签页),才能看到那个期盼已久的
Markdown PDF: Export (pdf)选项。
另外,如果你同时还安装了Markdown Preview Enhanced这类功能更强的预览插件,它可能会“抢占”右键菜单,导致Markdown PDF的选项被覆盖。遇到这种情况,最快速的解决办法就是暂时禁用或卸载MPE插件。
中文简历必须关掉 markdown-pdf.highlight
插件默认会启用highlight.js来高亮显示代码块,但这套引擎对中文字符的宽度计算并不友好,经常会把整行代码块的宽度撑到页面之外。尤其是当你的简历里包含类似npm install或git commit -m这种带空格的命令行时,高亮引擎可能会把空格当作不可折行的字符来处理,导致排版错乱。
稳妥起见,建议直接在设置中关闭代码高亮:
"markdown-pdf.highlight": false
如果还是希望保留基本的代码样式,可以转而用纯CSS来控制。例如,为code和pre code选择器单独设置white-space: pre-wrap和overflow-x: auto,来实现代码折行和横向滚动。
话说回来,真正的麻烦往往不在于单次的导出操作,而在于每换一台新电脑或新工作环境,都需要重新配置一遍字体路径和CSS。因此,一个非常实用的建议是:将resume.css和包含相关设置的.vscode/settings.json文件一并纳入你的Git仓库进行版本管理,而不是依赖容易丢失或覆盖的全局设置。这样,无论走到哪里,你的简历导出环境都是即开即用、完美复现的。
