마크다운을 PDF로 변환하는 방법
마크다운으로 문서를 작성하다 보면 결국 PDF로 변환해야 할 때가 옵니다. 보고서 제출, 이력서 전달, 제안서 공유 등 공식적인 문서는 대부분 PDF 형식을 요구하기 때문입니다. 이 글에서는 마크다운을 PDF로 변환하는 여러 가지 방법을 비교하고, 각 상황에 맞는 최적의 방법을 안내합니다.
왜 마크다운에서 PDF로 변환할까?
마크다운은 작성과 편집이 쉽지만, 공유와 인쇄에는 한계가 있습니다. PDF가 필요한 이유를 정리하면 다음과 같습니다.
- 레이아웃 보존: 어떤 기기에서 열어도 동일한 모양으로 보입니다.
- 인쇄 최적화: 페이지 나눔, 여백, 헤더/푸터 등 인쇄 관련 설정이 가능합니다.
- 공식 문서: 계약서, 보고서 등은 PDF 형식이 표준입니다.
- 보안: 수정 방지, 비밀번호 설정 등이 가능합니다.
- 전문적인 인상: 잘 정리된 PDF는 신뢰감을 줍니다.
방법 1: CLI 도구 사용
Pandoc
Pandoc은 가장 널리 알려진 문서 변환 도구입니다.
# 설치 (macOS)
brew install pandoc
# 기본 변환
pandoc document.md -o document.pdf
# LaTeX 엔진 지정
pandoc document.md -o document.pdf --pdf-engine=xelatex
# 한글 폰트 지정
pandoc document.md -o document.pdf --pdf-engine=xelatex -V mainfont="Noto Sans KR"
Pandoc은 강력하지만 LaTeX 설치가 필요하고, 한글 처리를 위해 별도 설정이 필요합니다.
md-to-pdf
Node.js 기반의 간단한 변환 도구입니다.
# 설치
npm install -g md-to-pdf
# 변환
md-to-pdf document.md
Puppeteer(Chromium)를 사용하므로 CSS 스타일링이 자유롭고, 한글도 잘 처리됩니다.
방법 2: 에디터 내장 기능
VS Code
VS Code에서는 확장 프로그램을 통해 PDF 변환이 가능합니다.
- Markdown PDF 확장 프로그램을 설치합니다.
- 마크다운 파일을 열고
Ctrl+Shift+P(macOS:Cmd+Shift+P)를 누릅니다. Markdown PDF: Export (pdf)를 선택합니다.
Typora
Typora에서는 파일 메뉴에서 바로 PDF로 내보낼 수 있습니다.
파일>내보내기>PDF를 선택합니다.- 여백과 테마를 설정할 수 있습니다.
방법 3: 온라인 도구
온라인 변환기는 소프트웨어 설치 없이 빠르게 변환할 수 있습니다. 다만 민감한 문서에는 사용하지 않는 것이 좋습니다.
| 도구 | 장점 | 단점 |
|---|---|---|
| Dillinger | 실시간 미리보기 | 커스텀 스타일 제한 |
| MarkdownToPDF.com | 간단한 사용법 | 한글 폰트 제한 |
| CloudConvert | 다양한 형식 지원 | 무료 사용 횟수 제한 |
방법 4: printmd 사용하기
printmd는 마크다운을 아름다운 PDF로 변환하는 데 특화된 도구입니다. 특히 한글 문서 처리에 강점이 있습니다.
printmd로 변환하는 단계
1단계: 마크다운 파일 준비
일반적인 마크다운 문법으로 문서를 작성합니다.
# 프로젝트 제안서
## 개요
이 프로젝트는 사내 문서 관리 시스템을 개선하는 것을 목표로 합니다.
## 목표
- 문서 작성 시간 30% 단축
- 버전 관리 자동화
- 팀 간 협업 효율화
## 일정
| 단계 | 기간 | 담당 |
|------|------|------|
| 기획 | 2주 | PM팀 |
| 개발 | 8주 | 개발팀 |
| 테스트 | 2주 | QA팀 |
2단계: printmd에서 열기
printmd 웹 앱이나 확장 프로그램에서 마크다운 파일을 열면 바로 미리보기가 표시됩니다.
3단계: 스타일 조정
인쇄에 적합한 스타일을 선택하거나 커스텀 CSS를 적용할 수 있습니다.
4단계: PDF로 출력
인쇄 기능을 통해 PDF로 저장합니다. 브라우저의 인쇄 대화 상자에서 여백, 용지 크기 등을 조정할 수 있습니다.
좋은 PDF 출력을 위한 팁
1. 페이지 나눔 활용
CSS의 page-break 속성을 활용하면 원하는 위치에서 페이지를 나눌 수 있습니다.
h2 {
page-break-before: always;
}
table, figure {
page-break-inside: avoid;
}
2. 인쇄용 스타일 고려
PDF로 변환할 문서를 작성할 때는 인쇄 환경을 고려해야 합니다.
<!-- 좋은 예: 링크 URL을 병기 -->
자세한 내용은 [공식 문서](https://docs.example.com)를 참고하세요.
<!-- 인쇄 시 URL이 보이도록 CSS 설정 -->
@media print {
a[href]:after {
content: " (" attr(href) ")";
font-size: 0.8em;
color: #666;
}
}
3. 이미지 크기 조절
PDF에서 이미지가 넘치지 않도록 최대 너비를 설정합니다.
img {
max-width: 100%;
height: auto;
}
4. 코드 블록 처리
긴 코드 블록이 페이지를 넘어가면 잘릴 수 있습니다. 줄 바꿈 설정을 추가합니다.
pre, code {
white-space: pre-wrap;
word-wrap: break-word;
}
5. 한글 폰트 지정
한글 문서에서 폰트를 명시적으로 지정하면 더 깔끔한 결과물을 얻을 수 있습니다.
body {
font-family: 'Pretendard', 'Noto Sans KR', sans-serif;
}
방법별 비교
| 기준 | Pandoc | md-to-pdf | VS Code | printmd |
|---|---|---|---|---|
| 설치 난이도 | 높음 | 보통 | 쉬움 | 쉬움 |
| 한글 지원 | 설정 필요 | 좋음 | 보통 | 좋음 |
| 스타일 자유도 | 높음 | 높음 | 보통 | 높음 |
| 미리보기 | 없음 | 없음 | 있음 | 있음 |
| 자동화 | CLI 지원 | CLI 지원 | 수동 | 수동 |
| 학습 곡선 | 높음 | 낮음 | 낮음 | 낮음 |
자주 묻는 질문
Q. 마크다운 표가 PDF에서 깨지면?
표가 너무 넓으면 PDF에서 잘릴 수 있습니다. 열 수를 줄이거나 글자 크기를 작게 설정하세요.
Q. 코드 블록의 구문 강조가 PDF에 적용되나요?
대부분의 도구에서 구문 강조를 지원합니다. printmd에서는 highlight.js 기반의 구문 강조가 자동으로 적용됩니다.
Q. 여러 마크다운 파일을 하나의 PDF로 합칠 수 있나요?
Pandoc에서는 여러 파일을 한 번에 지정할 수 있습니다.
pandoc chapter1.md chapter2.md chapter3.md -o book.pdf
마무리
마크다운을 PDF로 변환하는 방법은 다양합니다. 간단한 문서라면 VS Code 확장이나 printmd로 충분하고, 복잡한 레이아웃이 필요하다면 Pandoc이나 전문 도구를 사용하면 됩니다. 중요한 것은 내 워크플로우에 맞는 도구를 선택하는 것입니다.
특히 한글 문서를 자주 다룬다면, 한글 처리가 잘 되는 도구를 선택하는 것이 시행착오를 줄이는 가장 좋은 방법입니다. printmd는 별도의 설정 없이 한글 문서를 깔끔하게 PDF로 변환할 수 있어 추천합니다.