テキストファイルをコンビニで印刷するために markdown to pdf する

自宅で印刷する必要性に駆られたのだが、コンビニだと Office や PDF 形式しか対応してない。Office は持ってないので PDF しかない……というわけで、テキストファイル(Markdown)から PDF をつくる方法を調べた。

結論

以下の二段階にした。

  • markdown to html は Pandoc で行う
  • html to pdf は Prince で行う

前提

  • Windows 10 x64

markdown to html

Pandoc を導入し、以下コマンドラインで可能。

$ pandoc text.md -o text.html

html to pdf

まずは Prince をインストールする。非商用なら無料で使えます。

次に以下 CSS ファイルをつくる。

@font-face {
    font-family: serif;
    src: url("C:/WINDOWS/Fonts/MSMINCHO.TTC");
}

@font-face {
    font-family: sans-serif;
    src: url("C:/WINDOWS/Fonts/MSGOTHIC.TTC");
}

そして Prince を起動し、

  • CSS & JavaScript の CSS 欄に上記 CSS ファイルを読み込む
  • Add files から text.html を読み込む
  • CONVERT ボタンで変換する

これで text.pdf が生成されるはず。

Q&A

Q: CSS ファイルを指定するのはなぜ?

何も指定しないと日本語フォントが効かずに PDF が文字化けするから。

参考: Trouble-Free Travel/TechWiki

Q: コンビニでの印刷はどうやっている?

USB メモリに PDF ファイルを入れて、コンビニのプリント機で。

Q: なぜ Pandoc で PDF 変換まで完結させない?

ちょっと試したけど動かなかったから。

以前は LaTex をインストールしてたから多分動いてたんだけど、ある時「これ容量食うしもういいや」と削除した。だからなのだろう、PDF エンジンが無くて Pandoc の PDF 変換が動かなかった。他のエンジンということで、pdfroff http://gnuwin32.sourceforge.net/packages/groff.htm も試してみたけど、これも動かず(たぶん groff と pdfroff は別物)。

……と困惑してきたので、いったんやめて、別手段探してたら Prince でいけそうだったのでそうした。