Litmus — 話題のニュースを、深く読み解く。 RSS
ソフトウェア

PFNの「pfpdf」はMarkdownをnpx一本で日本語PDFに組版できる

Preferred NetworksがMarkdownを印刷品質の日本語PDFに変換するCLI「pfpdf」を公開。フォントまで同梱し、環境によって体裁が崩れる問題を解決した。

ノートパソコンのキーボードに両手を置いてタイピングしている様子

イメージ写真 記事の内容を撮影したものではありません。Photo by Israel Torres on Pexels

この記事には Amazon アソシエイトのリンクを含みます。

Markdownで議事録や仕様書を書いている。中身はそれで十分なのに、最後に「PDFでください」と言われて体裁直しに時間を取られた経験はないだろうか。見ているパソコンにどのフォントが入っているかで改ページの位置まで変わってしまい、同じファイルのはずなのに相手の画面と自分の画面で違う見た目になる。

Preferred Networks(PFN)のエンジニア、いもす氏は2026年10月28日、この悩みに向けたCLIツール「pfpdf」をオープンソースで公開した。コマンド一つで、Markdownの日本語文書を印刷品質のPDFに変換できるという(PFN公式ブログ、2026-10-29確認)。具体的にどう使え、環境によって見た目が変わる問題をどう解決しているのか。

npxコマンド一つでPDFになる

使い方はシンプルだ。Node.jsとnpmが入った環境で、次のコマンドを打つだけでよい。

npx @pfnet-research/pfpdf@latest --input document.md --output document.pdf

--inputにディレクトリを指定すると、直下のMarkdownファイルをファイル名順に結合して1つのPDFにする。事前にインストール作業をする必要はなく、front matterでtitle・author・templateを指定できる(GitHub公式リポジトリ README、2026-10-29確認)。

対応しているのはGitHub Flavored Markdown(表・リスト・取り消し線など)に加え、日本語の強調表現、インラインと別行立ての数式、コードのシンタックスハイライトだ。BibTeX形式の文献ファイルを指定すれば、引用と参考文献一覧も自動で生成する。アンダースコアを3つ以上並べると改ページ扱いになる(PFN公式ブログ、2026-10-29確認)。見た目は、同梱された7種類のテンプレートから選べる。

テンプレート想定する用途
academic論文・研究レポート
book長文・書籍
compact省スペース
default標準
notebookカジュアル・ノート風
pfnコーポレート
technicalコード主体・高密度

同じサンプル文書を7種のテンプレートで並べて比較できるギャラリーが公式サイトにあり、数式e^{iπ}+1=0を含む日本語文書の組版例も確認できる(公式サイト、2026-10-29確認)。ここまで機能を並べただけでは、見た目が環境によって本当に崩れないと言い切れる理由までは分からない。

なぜ環境で崩れないのか

ブラウザの印刷機能でMarkdownプレビューをPDF化した経験がある人は少なくないはずだ。見ているパソコンのフォントや設定しだいで、強調記号の位置や改ページがずれる場面に当たったこともあるだろう。pfpdfの公式ブログは、この問題を開発動機としてはっきり書いている。「Markdownは決まったレンダリングツールがなく、そのまま顧客やユーザに提供するわけにはいきません」という一文だ(PFN公式ブログ)。

pfpdfが使っているのは、Vivliostyle CLIという組版エンジンと、見えないブラウザ(Chromium)の組み合わせだ。CSSの指定だけでページ送りや脚注、禁則処理までブラウザのレイアウトエンジンに計算させ、その結果をそのままPDFとして書き出す仕組みになっている(GitHub公式リポジトリ README)。

フォントの扱いが、この結果を左右する。pfpdfは再配布可能なオープンライセンスのフォントを同梱しており、OSに入っているフォントには既定では頼らない。数式やコードハイライト用のアセットも同梱済みだ。ホストのフォントを使いたい場合は、明示的にオプトインする必要がある(GitHub公式リポジトリ README、2026-10-29確認)。

変換する側のパソコンに何のフォントが入っているかに、結果がもう左右されなくなった。同じコマンドを誰が打っても同じ見た目のPDFになる理由はここにある。あとは、ここまで何度も出てきた「インストール不要」という言葉が、実際どこまでを指しているのかが気になってくる。

「インストール不要」の中身

公式ブログも README も「インストール作業は不要」と説明している。ただし、これは「何の通信も発生しない」という意味ではない。初回実行時には、PDFを描画するためのChromiumが自動的にダウンロードされ、数百MBの通信が発生することがあると明記されている(GitHub公式リポジトリ README、2026-10-29確認)。

「インストール不要」が指しているのは、利用者がChromiumやフォント、Vivliostyleを自分で用意してパスを通す作業が要らない、という意味だ。その作業自体がなくなったわけではなく、初回実行時にツール側が自動でまとめて済ませる形に変わった、と読むのが正確になる。

取得したChromiumは以降キャッシュされ、2回目以降の実行では再ダウンロードされない。文書が同梱の数式・コードハイライト機能だけで完結していれば、キャッシュが済んだあとはオフラインでも変換できる(GitHub公式リポジトリ README、2026-10-29確認)。CIで使う場合や長期的に保守する文書では、npx @pfnet-research/[email protected]のようにバージョンを固定しておくことも推奨されている。ここまで分かれば、残るのは自分の環境と文書がこのツールに向くかどうかの確認になる。

使う前に確認したいこと

pfpdf本体のライセンスはMITで、依存するVivliostyle CLIはAGPL-3.0になる。その他の依存関係のライセンスはTHIRD_PARTY_LICENSES.mdにまとめられている(GitHub公式リポジトリ README、2026-10-29確認)。

CIで実ブラウザによるPDF生成を検証しているのは、macOS(Apple Silicon)とLinux(x86_64)の2環境だ。Windows(x86_64)とLinux(aarch64)は追加対応の位置づけになる。Linux環境では、Chromiumを動かすための追加システムライブラリが必要になる。過不足はnpx @pfnet-research/pfpdf@latest --doctorで確認できる(GitHub公式リポジトリ README、2026-10-29確認)。

もう一つ、見落とせない注意書きがある。pfpdfは信頼できる自分の文書だけを変換する前提で作られている。Markdown中の生HTMLや<script>はサニタイズもサンドボックス化もされずにそのまま実行される。文書の中からローカルファイルやリモートのリソースにアクセスすることもできる(GitHub公式リポジトリ README、2026-10-29確認)。社内の議事録や自分で書いた仕様書を変換する分には問題にならない。ただし、他人から送られてきたMarkdownや、出どころの分からないファイルをそのまま流し込む使い方には向かない。

まとめ

pfpdfは、Markdownで書いた日本語文書をnpxコマンド一つで印刷品質のPDFに変換できるオープンソースCLIだ。Vivliostyleとブラウザによる組版に加え、フォントまで同梱することで、変換する環境によって見た目が変わる問題を解決している。使う前に押さえておきたい点は2つある。「インストール不要」とはいっても初回だけはChromiumの取得で数百MBの通信が発生すること、そして信頼できる自分の文書だけを対象にする設計であることだ。Markdownで文書を管理しつつ、顧客やユーザーには整ったPDFを渡したい人にとって、環境構築なしで試せる選択肢が一つ増えたことになる。

この記事の先を読む本を探す

特定の本を勧めるものではありません。検索結果から、いまの版と目次を確かめて選んでください。

コメント

気づきや感想をどうぞ

記事への補足や、読んで考えたことをお寄せください。個人情報や、他の人を傷つける内容の投稿はお控えください。

コメントを読み込んでいます…

    ほかの記事

    最新の記事 →