การแปลง Markdown เป็น PDF

การแปลง Markdown เป็น PDF

Convert Markdown to PDF with Thai Support

เอกสารนี้อธิบายวิธีการแปลงไฟล์ Markdown เป็น PDF โดยรองรับภาษาไทยอย่างสมบูรณ์ ใช้ Pandoc ร่วมกับ XeLaTeX

ข้อกำหนดเบื้องต้น (Prerequisites)

ก่อนเริ่มต้น ต้องติดตั้งซอฟต์แวร์ต่อไปนี้:

1. Pandoc

เครื่องมือแปลงเอกสารหลากหลายรูปแบบ รองรับการแปลงจาก Markdown เป็น PDF

2. LaTeX Engine

แนะนำ XeLaTeX เนื่องจากรองรับ Unicode และฟอนต์ภาษาไทยได้ดีที่สุด

3. ฟอนต์ภาษาไทย

  • Sarabun - ออกแบบสำหรับหน้าจอและเอกสาร
  • Noto Sans Thai - จาก Google
  • TH Sarabun New - สำหรับเอกสารทางการ

การติดตั้ง (Installation)

การตั้งค่าฟอนต์ภาษาไทย

การตรวจสอบฟอนต์ที่ติดตั้ง

# Linux/macOS - ตรวจสอบฟอนต์ Sarabun
fc-list | grep -i sarabun

# ดูฟอนต์ไทยทั้งหมด
fc-list :lang=th

คำสั่งแปลง PDF

1 การแปลงพื้นฐาน

pandoc input.md -o output.pdf --pdf-engine=xelatex -V mainfont="Sarabun"

2 การแปลงพร้อมสารบัญ

pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V mainfont="Sarabun" \
  -V geometry:margin=1in \
  --toc \
  --toc-depth=3

3 การแปลงหลายไฟล์

# รวมหลายไฟล์ Markdown เป็น PDF เดียว
pandoc chapter1.md chapter2.md chapter3.md -o book.pdf \
  --pdf-engine=xelatex \
  -V mainfont="Sarabun" \
  --toc

ตัวเลือกขั้นสูง

การตั้งค่าขอบกระดาษ

pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V mainfont="Sarabun" \
  -V geometry:margin=2.5cm

การกำหนดขนาดหน้ากระดาษ

# A4
pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V mainfont="Sarabun" \
  -V geometry:a4paper

การใช้ฟอนต์หลายแบบ

pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V mainfont="Sarabun" \
  -V sansfont="Noto Sans Thai" \
  -V monofont="Sarabun"

การรองรับรูปภาพ

pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V mainfont="Sarabun" \
  -V graphics=true \
  --resource-path=.:images

การใช้ Template (YAML defaults)

สร้างไฟล์ thai-pdf.yaml สำหรับการตั้งค่าที่ใช้บ่อย:

# thai-pdf.yaml
pdf-engine: xelatex
variables:
  mainfont: Sarabun
  sansfont: Sarabun
  monofont: Sarabun
  fontsize: 12pt
  geometry: margin=2.5cm
  documentclass: article
  lang: th-TH
toc: true
toc-depth: 3
# ใช้ไฟล์ defaults
pandoc input.md -o output.pdf --defaults=thai-pdf.yaml

การแก้ไขปัญหา

ไม่พบฟอนต์ (Font Not Found)

อาการ: Error: fontspec error: "font-not-found"

# ตรวจสอบว่าฟอนต์ติดตั้งแล้วหรือยัง
fc-list | grep -i sarabun

# หากไม่พบ ให้ติดตั้งฟอนต์ใหม่และรีสตาร์ท Terminal
fc-cache -fv

ตัวอักษรไทยแสดงผลไม่ถูกต้อง

อาการ: ตัวอักษรไทยเป็นกล่องว่าง ตัวอักษรซ้อนกัน

# ตรวจสอบว่าใช้ XeLaTeX และเพิ่มการรองรับภาษาไทย
pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V mainfont="Sarabun" \
  -V lang=th-TH

Error: Missing $ inserted

Escape อักขระพิเศษในไฟล์ Markdown เช่น _, %, $

ส่วนลด 50\% แทน ส่วนลด 50%

สรุปคำสั่งที่ใช้บ่อย

# คำสั่งพื้นฐานสำหรับภาษาไทย
pandoc input.md -o output.pdf \
  --pdf-engine=xelatex \
  -V mainfont="Sarabun" \
  -V geometry:margin=2.5cm \
  -V fontsize=12pt \
  --toc \
  --toc-depth=3

แหล่งข้อมูลเพิ่มเติม