WSL の Ubuntu から markdown-pdf を使う

ちょっとしたドキュメント書く際に Word もだるいなぁと思って、なんかテキスト形式で書いて PDF 変換できるやつないかなぁと探したところ markdown-pdf なるものがありました。

Pandoc で Word 化という手もありますが、以前試したときフォントとスタイルがだいぶ残念な感じだったので(調査不足かもしれない)こちらを試してみます。

WSL からインストール

今の Windows には WSL という便利なものがありますので、 WSL ( Ubuntu )のターミナルを開いて粛々と npm install します。 -g オプション付けるとグローバルにインストールされます。事前に npm 自体をインストールしておく必要がありますが、それについては割愛。

なお、インストール時にパーミッションエラーが発生する場合(発生した)、デフォルトのインストール先を変更すると良いようです。下記の通り、 npm config set prefix '~/.npm-global' してパスを通しておきました。

これで markdown-pdf が使えるようになりました。

$ markdown-pdf --version
8.1.1

libfontconfig.so.1 がない

いざ markdown-pdf を実行してみるとこんなエラーが出ました。

error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory

fontconfig とかいうやつがないっぽいのでインストールします。

$ sudo apt-get install fontconfig

これで PDF 出力ができるようになります。

$ markdown-pdf sample.md

日本語が出力されない

PDF は出力できるようになったんですけど、日本語が出力されません。 Ubuntu 上に日本語フォントがないためと思われます。

日本語フォントインストールするかーと思ったんですが、 Windows 側のフォントをシンボリックリンクUbuntu 側に認識させられるっぽいのでそっちで対応します。なかなかワイルドな感じですが、メイリオとか使えたほうがいいですしね。フォントのライセンス的にはどうなんだろうな・・・。

$ sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
$ sudo fc-cache -fv

とりあえずこんな感じの CSS を作って、

body {
    font-family: meiryo;
}

-s オプションで読み込ませます。

$ markdown-pdf sample.md -s sample.css

これで日本語フォント込みの PDF が出力できるようになりました。