Systematic diagnostic workflow for resolving pandoc PDF conversion errors
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-pandoc-pdf-error-diagnosis-6e34b6273b8a ,按照其中的说明把「pandoc-pdf-error-diagnosis」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
When pandoc reports an "unknown error" during PDF conversion, follow this systematic diagnostic workflow to identify and resolve the issue.
First, confirm pandoc is installed and check its version:
pandoc --version
This verifies pandoc is available and shows which version and features are supported.
Identify which PDF rendering engines are installed on the system:
which pdflatex xelatex lualatex wkhtmltopdf
Common engines and their characteristics:
Try conversion with an explicit engine specification, starting with xelatex (most forgiving):
pandoc input.md -o output.pdf --pdf-engine=xelatex
Important: Capture the full stderr output for diagnosis:
pandoc input.md -o output.pdf --pdf-engine=xelatex 2>&1 | tee conversion.log
Examine the captured stderr for common issues:
| Error Pattern | Likely Cause | Solution |
|---|---|---|
xelatex not found | Engine not installed | Install TeX Live or try different engine |
Package xyz not found | Missing LaTeX package | Install missing package or remove feature |
Font xyz not found | Missing font | Install font or change document fonts |
LaTeX Error: File xyz.sty not found | Missing style file | Install texlive-extra or simplify document |
If the primary engine fails, try alternatives in order:
# Try pdflatex (most basic)
pandoc input.md -o output.pdf --pdf-engine=pdflatex 2>&1
# Try lualatex (if xelatex failed)
pandoc input.md -o output.pdf --pdf-engine=lualatex 2>&1
# Try wkhtmltopdf (for HTML-heavy content)
pandoc input.md -o output.pdf --pdf-engine=wkhtmltopdf 2>&1
If a specific engine is needed but missing:
# Debian/Ubuntu
sudo apt-get install texlive-xetex texlive-fonts-recommended
# macOS with Homebrew
brew install --cask mactex-no-gui
# Check what's available
tlmgr install <package-name>
If all engines fail, simplify the source document:
#!/bin/bash
# pandoc-pdf-diagnose.sh
INPUT="${1:-input.md}"
OUTPUT="${2:-output.pdf}"
echo "=== Pandoc PDF Conversion Diagnosis ==="
echo "Input: $INPUT"
echo "Output: $OUTPUT"
echo ""
echo "1. Pandoc version:"
pandoc --version | head -1
echo ""
echo "2. Available engines:"
for engine in pdflatex xelatex lualatex wkhtmltopdf; do
if which $engine > /dev/null 2>&1; then
echo " ✓ $engine: $(which $engine)"
else
echo " ✗ $engine: not found"
fi
done
echo ""
echo "3. Attempting conversion with xelatex:"
pandoc "$INPUT" -o "$OUTPUT" --pdf-engine=xelatex 2>&1
if [ $? -eq 0 ]; then
echo "✓ Conversion successful!"
else
echo "✗ Conversion failed. Try alternative engines."
fi