md转pdf神器之Pandoc
说到qmd,底层就是md转pdf
昨天,我兴致勃勃地召唤了 ChatGPT、Grok 和 Deepseek 这些 AI 助手,希望它们能当一回技术向导,带我把一堆 Markdown 文件优雅地转换成一本排版精美的 PDF 电子书。
它们几乎异口同声地推荐了同一个工具:Pandoc。
语气笃定、步骤清晰,仿佛只要跟着操作,一切都能水到渠成。
于是我信心满满地开始动手。
然而现实很快给了我当头一棒。
转换过程不断报错,像是踏进了一个看不见底的 bug 深坑。
我把错误日志一条条丢给这些 AI “军师”,它们也确实很积极——不断提出新的解决方案。
于是我改配置、换参数、重跑命令。
一遍。
两遍。
三遍。
时间从早上一路滚到晚上 11 点。
我几乎一整天都在和 Pandoc 较劲,连饭都没顾上吃。肚子饿得咕咕直叫,像是在开一场不太和谐的音乐会。
结果呢?
问题依旧。
错误提示就像个甩不掉的小尾巴,反反复复出现,仿佛在嘲笑我的执着。
那一刻我真的有点崩溃。
心里不禁怀疑:
这些 AI 平时看起来神通广大,怎么到了关键时刻,给出的方案却像复读机一样来回兜圈子?
方案换了一个又一个。
实验做了一轮又一轮。
简单的问题,硬是被折腾成了一个世界级难题。
最后我实在受不了了,干脆把 AI 扔到一边,转而求助老朋友——Google。
在几篇中文博客里翻来找去,终于找到了一行关键命令。
简单得离谱。
简单到让人想笑。
pandoc test.md -o output.pdf --pdf-engine=xelatex -V CJKmainfont="微软雅黑" -V mainfont="Times New Roman"
问题就这样解决了。
Pandoc 本身不会直接生成 PDF,它是:
Markdown → LaTeX → PDF,所以必须指定一个 LaTeX 引擎。
常见三种:
|
|
|
|
|
|---|---|---|---|
pdflatex |
|
|
|
xelatex |
|
|
|
lualatex |
|
|
|
使用xelatex可以中文稳定转换
如果是长文档或大量图片,可以考虑:
pandoc test.md -o output.pdf --pdf-engine=lualatex -V CJKmainfont="微软雅黑" -V mainfont="Times New Roman"
它通常 速度更快、内存更好。
CJKmainfont 的作用是:
指定中文字体,在windows中,字体文件储存在C:\Windows\Fonts
可以根据实际需要的中文字体进行设置,比如宋体
pandoc test.md -o output.pdf --pdf-engine=xelatex -V CJKmainfont="SimSun" -V mainfont="Times New Roman"

那一刻的感觉,就像在迷宫里绕了十几个小时,最后发现出口其实就在身后。
我立刻把这条命令记下来,生怕哪天再遇到同样的问题,又被 AI 带着绕圈子。
后来我又顺便研究了一下:如果要把一个文件夹里的所有 Markdown 文件拼接起来,生成一本完整的 PDF,该怎么做?
在 Windows 的 PowerShell 里,我最终折腾出了这样一条“终极命令”:
pandoc (Get-ChildItem -Path . -Filter "*.md" | Sort-Object Name | ForEach-Object { '"' + $_.FullName + '"' }) `-o output.pdf --pdf-engine=lualatex `--toc --number-sections `-V toc-title="目录" `-V documentclass=report `-V geometry=a4paper `-V geometry=margin=1in `-V fontsize=12pt `-V CJKmainfont="Microsoft YaHei" `-V mainfont="Times New Roman" `--template=template.tex
为了让生成的 PDF 看起来更专业一点,我还配了一个简单的 template.tex 模板:
\documentclass{report}\usepackage{fancyhdr}\pagestyle{fancy}\fancyhf{}\rfoot{\thepage}\begin{document}$body$\end{document}
顺带一提,如果有人不知道怎么打开 PowerShell,其实很简单:
按 Win + R,输入 powershell,回车即可。
这一天的折腾让我突然有点感慨。
AI 确实很强,但有时候它们给出的答案,更像是一堆看起来合理的“可能路径”。真正解决问题的那条路,往往还得靠自己慢慢摸索。
所以很多时候,最可靠的组合仍然是:
自己 + 搜索引擎。
AI 可以当助手,但关键时刻,方向盘还是得握在自己手里。
最后,我使用的版本是这个
https://github.com/jgm/pandoc/releases/download/3.9/pandoc-3.9-windows-x86_64.msi
,可以自行安装
夜雨聆风