テキストファイルをコンビニで印刷するために 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 でいけそうだったのでそうした。