Markdown to PDF が簡単にできるらしい md-to-pdf を試した

確かに楽だ。コマンド一発で hoge.md を hoge.pdf にできる。日本語もバッチリ。以前紹介した Prince よりもラクチン。

前提

  • Windows 10

インストール

npm install で一発。ただ依存ライブラリ(chromium)が 100MB 超なので貧弱回線だと辛いかも。

$ npm install -g md-to-pdf

使い方

Markdown 置いてるディレクトリに移動して md-to-pdf を実行するだけ。

今回は readme.md を置いたディレクトリで試す。

こんな感じで生成された。

$ md-to-pdf
  √ generating PDF from readme.md

$ dir /b
...
readme.md
readme.pdf

PDF の出来

OK:

  • 日本語の記述(文字化けとかしてないこと)
  • 画像
  • 外部リンク
  • コードハイライト
    • .py は文字列リテラルとキーワードが最低限
    • .bat はハイライトされず

NG

  • ローカルファイルを指す相対リンク
    • http://localhost:XXXXX/(Filename).(Ext) ← こんなリンクになった
    • ポート番号はたぶん空いてるのが使われる?

所感

自宅で文章を印刷したい場合に使えそう。

プリンタ持ってない勢の私はコンビニ利用なのだが、コンビニ機は Markdown に対応してない(PDF や Word のみ)。でも md-to-pdf を使えば Markdown から一発で PDF つくれる

このツールにありがちな「日本語が文字化けして話にならない」もなさそうだし。

※ちなみに以前は結構苦労した → テキストファイルをコンビニで印刷するために markdown to pdf する - stamemo

トラブルシュート

Q: なんかファイアウォールの許可ダイアログが出たんだけど?

Ans: どう対処したか覚えてないけど、もしブロックされてたら解除したら良いかも。

この辺うろ覚え。たぶんダイアログをそのまま閉じたら「node.exe は全部ブロック!」的な設定になっちゃう。それで md-to-pdf も実行が終わらなくなる可能性がある。

もしそうなら以下対応を。

  • 1: firewall.cpl を実行する
  • 2: 詳細設定リンクから「セキュリティが強化された Windows Defender ファイアウォール」を開く
  • 3: 受信の規則から「Node.js: Server-side JavaScript」の設定を探す
  • 4: 3 がブロックになってたら無効にしておく
    • 私の場合 TCP と UDP で計二項目あった

Q: 生成時間に結構時間かかるくない?

Ans: かかるかも。

node.js はただでさえ遅いし、なんか通信も走らせてるみたいなので。

今回の例、3000 文字、10 リンク、3 画像くらいの readme.md ファイル一つだが 10 秒はかかってる。

Q: 細かいレイアウトや整形はできない?

Ans: できそうだが試してない。

詳しくは以下を。