HackMD というサービスをよく使っています。 これで書いたものをPDF化したくなったことがあったので、その方法について調べたことをメモしておきます。
もともとHackMDにはPDFでエクスポートする機能があったのですが、 サーバー負荷が重かったらしく、現在は削除されています。 PDF化機能を追加するというissueは存在していて、 開発は続けていらっしゃるようです。
HackMDにかぎらずMarkdownをPDF化する方法には、少なくとも以下のものがあります。 このようなサービスやMarkdownエディタは数え切れないほどあり(逆に言うと決定的なのがないのですが)、 方法は他にもたくさんあると思います。
Markdown -> HTML
- Atomで開いてHTMLで保存
- MathJaxが使る
- リアルタイムプレビュー
- ほかのMarkdownエディタも同じようなもの?
- Gist
- 数式が使えない
- grip
- GitHubのAPIに投げてレンダリングするので、結果はおよそGistと同じ
- だが、gripはソースをいじったりAPIを使ったりすることで自分でカスタマイズでき、例えばMathJaxを使ったりもできる
- pandoc
- CSSで見た目をカスタマイズできる
- デフォルトだとあまり見栄えしない
- HackMDの拡張Markdow記法(の多く)が扱える
HTML -> PDF
- ブラウザの印刷機能
- 見た目が変わることがある
- wkhtmltopdf
- 見た目が変わることがある
- 動作が遅い
Markdown -> PDF
- pandoc + LaTeX
- pandoc + wkhtmltopdf
- markdown-pdf
- 見た目の調整が面倒
いろいろ試したところでは、
- CSSで見た目を調節しながら、pandocでHTMLを出力し、
- ブラウザの印刷機能でPDFに変換する
のがベストかなと思いました。 この方法ならHackMDの拡張記法も扱えるようです。
CSSはよくわからないので、github.css をそのまま使わせてもらいました。
Pandocは次のように使います。
$ pandoc -s --mathjax -c github.css
追加で、--indented-code-classes
でコードハイライトを有効にしたり、-H, -B, -A
でヘッダ・フッタを指定すると満足度の高いPDFが得られます。