Notepad++无法原生导出PDF,唯一可靠方案是通过F5调用pandoc命令:pandoc -s --toc --pdf-engine=xelatex -V CJKmainfont="SimHei" -V geometry:margin=1in "$(FULL_CURRENT_PATH)" -o "$(CURRENT_DIRECTORY)$(NAME_PART).pdf",缺一不可。

Notepad++ 本身不能直接生成 PDF,但通过命令行调用 pandoc 是唯一可靠、可复用的方案。其他所谓“插件一键导出”或“打印转 PDF”在代码高亮、中文字体、目录结构上几乎必然失败。
为什么不能用 Notepad++ 原生打印功能生成带高亮的 PDF
Notepad++ 的 File → Print 走的是 Windows 虚拟打印机路径,它不渲染语法高亮颜色,也不保留行号样式和背景色。即使装了 NppExport 插件导出 RTF 再转 PDF,也会遇到:RTF 格式对 Markdown 表格/引用块支持差、某些语言(如 YAML、TOML)高亮丢失、导出后字体大小错乱。这不是设置问题,是底层渲染机制限制。
Notepad++ 中正确调用 pandoc 的命令写法
必须用 Run → Run...(快捷键 F5),输入以下格式的命令(注意变量和引号):
pandoc -s --toc --pdf-engine=xelatex -V CJKmainfont="SimHei" -V geometry:margin=1in "$(FULL_CURRENT_PATH)" -o "$(CURRENT_DIRECTORY)\$(NAME_PART).pdf"
-
$(FULL_CURRENT_PATH)和$(CURRENT_DIRECTORY)\$(NAME_PART).pdf是 Notepad++ 内置变量,必须原样保留,不能加空格或换行 - Windows 下推荐用
SimHei(黑体)或Microsoft YaHei;Linux/macOS 用fc-list :lang=zh查可用字体名 - 如果报错
Could not find highlight style 'pygments',说明没装pygments:运行pip install pygments - 若中文显示为方框,不是字体问题,而是
xelatex没装全——必须安装完整版TeX Live(非精简版)
pandoc 命令里哪些参数不能省略
以下三项缺一不可,否则 PDF 会丢内容、无目录、或根本编译失败:
将 Markdown 格式的回复转换为适合 Telegram 的富文本,避免渲染错误。适用于用户偏好 Markdown 但目标平台为 Telegram 的场景。
-
--pdf-engine=xelatex:替代已废弃的--latex-engine,Pandoc 2.10+ 必须用这个 -
-V CJKmainfont="...":仅指定中文字体还不够,必须配合xelatex引擎才生效 -
-s(standalone):生成完整 LaTeX 文档,否则输出只是片段,xelatex无法编译
其他如 --toc、-V geometry:margin=1in 属于增强项,但不加不会导致失败。
常见错误现象与对应修复
执行命令后弹出窗口一闪而过,PDF 没生成?大概率是路径或编码问题:
- 报错
pdflatex: command not found或类似提示 → 实际是xelatex不在系统 PATH,检查where xelatex是否有输出 - PDF 生成但全是乱码或空白 → Notepad++ 当前文件编码不是 UTF-8(含 BOM),先执行
Encoding → Convert to UTF-8 - 目录页生成但点击无效 → PDF 阅读器不支持书签(如旧版 Adobe Reader),换用 SumatraPDF 或 Chrome 打开
- 代码块背景色丢失 → 缺少
--highlight-style=pygments参数,或pygments安装后未重启命令行环境
最隐蔽的问题是:Notepad++ 在非管理员权限下运行时,pandoc 可能无法写入当前目录。遇到生成失败,先手动建好目标文件夹再试。


















