ข้ามไปเนื้อหาหลัก

✓ เสร็จแล้ว

Markdown CV

CV/Resume ที่เขียนใน Markdown แล้ว render เป็น HTML ด้วย Astro — แก้ไขง่าย print-ready และไม่ต้องพึ่ง Canva หรือ Google Docs

· อ่านประมาณ 2 นาที

สารบัญ

ปัญหาของ CV ทั่วไป

CV ส่วนใหญ่อยู่ใน:

  • Word/Google Docs — format พัง เมื่อเปิดบน machine อื่น
  • Canva — ต้อง login, ไม่มี version control
  • PDF เก่า — แก้ยาก ไม่รู้ว่า source ต้นฉบับอยู่ที่ไหน
  • Overleaf/LaTeX — เขียนยาก syntax ซับซ้อน

ใช้ Markdown + Astro แก้ปัญหาทั้งหมด:

  • เปลี่ยนข้อมูลใน Markdown ไฟล์เดียว
  • Version control ด้วย git
  • Print เป็น PDF จาก browser ได้ทันที

Structure

src/
├── pages/
│   └── cv.astro          — render CV เป็น HTML
├── content/
│   └── cv/
│       └── index.md      — ข้อมูล CV ทั้งหมด
└── styles/
    └── cv.css            — style สำหรับ screen และ print

เนื้อหา CV ใน Markdown

---
name: Panupong Wongsorn
title: Frontend Developer
location: Thailand
github: panupongws98
website: panupongws.com
---

## Experience

### Frontend Developer — XYZ Company
**Jan 2024 – Present**

- สร้าง component library ด้วย Astro + TypeScript
- ปรับปรุง Lighthouse score จาก 62 เป็น 97

## Skills

**Frontend:** Astro, TypeScript, HTML/CSS, React
**Tools:** Git, VS Code, tmux, Figma
**Languages:** Thai (native), English (intermediate)
/* cv.css */
@media print {
  /* ซ่อน nav, footer */
  header, footer, .no-print { display: none !important; }

  /* ป้องกัน page break กลางหัวข้อ */
  h2, h3 { break-after: avoid; }
  .experience-item { break-inside: avoid; }

  /* ปรับขนาด font สำหรับ print */
  body { font-size: 11pt; line-height: 1.4; }
  a { color: inherit; text-decoration: none; }

  /* พิมพ์ URL ท้าย link */
  a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 0.8em;
    color: #666;
  }
}

ข้อดีของ approach นี้

Single source of truth — Markdown ไฟล์เดียวสำหรับทุก version ไม่มีไฟล์ซ้ำ

Diff ง่ายgit diff cv/index.md เห็นได้ทันทีว่าแก้อะไร

Print บน browserCtrl+P → Save as PDF — เลือก paper size A4 margin ปรับได้

Dark mode — เนื่องจากเป็น HTML ธรรมดา dark mode ทำงานได้เลย

สิ่งที่เรียนรู้

break-inside: avoid ช่วยได้มากสำหรับ print — ป้องกันหัวข้อขาดตอนกลาง page

CSS Grid สำหรับ 2-column layout ทำงานดีบน screen แต่ต้องทดสอบ print ด้วย เพราะบาง browser จัดการ Grid กับ print แตกต่างกัน

@page rule ตั้ง margin ของ page ได้:

@page {
  size: A4;
  margin: 1.5cm;
}