Docker環境でMarkdownファイルをPDFに変換するツールです。Node.jsのmd-to-pdfパッケージを使用しています。
- Dockerで環境構築が簡単
- 日本語フォント対応(IPAフォント、Noto CJK)
- GitHub風のMarkdownスタイル
- カスタマイズ可能なPDFスタイル
- Makefileで簡単操作
- Docker
- Docker Compose
- Make
project/
├── Dockerfile # Docker設定ファイル
├── compose.yml # Docker Compose設定
├── Makefile # 便利なコマンド集
├── .md-to-pdf.js # md-to-pdf設定ファイル
└── markdown/ # Markdownファイルを配置
└── sample.md
git clone <repository-url>
cd <project-directory>mkdir -p markdownmake buildmake upmake convert FILE=sample.mdmarkdown/sample.md → markdown/sample.pdf に変換されます。
# Markdownファイル一覧
make list
# 生成されたPDF一覧
make list-pdfmake cleanmake shellコンテナ内で直接md-to-pdfコマンドを実行できます。
| コマンド | 説明 |
|---|---|
make build |
Dockerイメージをビルド |
make up |
コンテナを起動 |
make down |
コンテナを停止 |
make restart |
コンテナを再起動 |
make shell |
コンテナに入る |
make convert FILE=xxx.md |
指定したファイルをPDF変換 |
make list |
Markdownファイル一覧を表示 |
make list-pdf |
PDFファイル一覧を表示 |
make clean |
生成されたPDFを削除 |
make help |
ヘルプを表示 |
Markdownファイルの先頭にYAMLフロントマターを追加することで、PDFのスタイルをカスタマイズできます。
---
pdf_options:
format: a4
margin: 20mm 20mm
printBackground: true
stylesheet: https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.2.0/github-markdown.min.css
body_class: markdown-body
css: |-
.markdown-body { font-size: 16px; }
.markdown-body pre > code { white-space: pre-wrap; }
---
# あなたのMarkdown文書
本文がここに入ります。---
pdf_options:
format: a4
margin: 20mm 20mm
printBackground: true
headerTemplate: |-
<style>
section {
margin: 5mm 15mm;
font-family: system-ui;
font-size: 10px;
color: silver;
}
</style>
<section>
<span class="title"></span>
<span class="date"></span>
</section>
footerTemplate: |-
<section style="margin: 0 auto;">
<div>
Page <span class="pageNumber"></span>
of <span class="totalPages"></span>
</div>
</section>
stylesheet: https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.2.0/github-markdown.min.css
body_class: markdown-body
css: |-
.page-break { page-break-after: always; }
.markdown-body { font-size: 16px; }
.markdown-body pre > code { white-space: pre-wrap; }
.markdown-body pre { background: #eee; padding: 5px; }
---
# タイトル
本文最初のページ
<div class="page-break"></div>
次のページ-
コンテナが起動しているか確認
docker compose ps
-
ファイルが存在するか確認
make list
-
コンテナ内で直接実行して詳細を確認
make shell md-to-pdf your-file.md
このDockerイメージには日本語フォント(IPAフォント、Noto CJK)が含まれているため、通常は文字化けしません。もし問題がある場合は、CSSでフォントを指定してください:
css: |-
.markdown-body {
font-family: 'IPAGothic', 'Noto Sans CJK JP', sans-serif;
}キャッシュをクリアして再ビルド:
docker compose down
docker system prune -a
make buildバグ報告や機能提案は、Issueやプルリクエストでお願いします。