LoginSignup
0
0

Windowsへのmd-to-pdfインストール

Posted at

Windows環境で md-to-pdf をインストールする際は、先に puppeteer-core をインストールしておくこと。

PS> npm install puppeteer-core
PS> npm install md-to-pdf

問題

Windows環境で何も考えずに npm install md-to-pdf すると、失敗する。
エラー内容は、Chromium最新版のインストールに失敗した旨のもの。

考察

md-to-pdf はMarkdowsをPDFに変換するツールだが、内部では……

  1. MarkdownからHTMLを生成
  2. ヘッドレスブラウザのChromiumでレンダリングし、PDF保存

……みたいな動きをしているらしい。ヘッドレスブラウザをハンドリングするのに使われるのがPuppeteer。
npm install md-to-pdf すると、依存ライブラリである puppeteer がインストールされようとし、この puppeteer がヘッドレスブラウザのChromiumをインストールしようとして、ここで失敗する。ちなみに npm install puppeteer としてもPuppeteer単体でインストールしようとしても同じように失敗する。

既定では、Puppeteerをインストールすると、インストーラーは、Microsoft Edgeも構築されているオープンソースブラウザーである最新バージョンのChromiumをダウンロードします。Microsoft Edgeがインストールされている場合は、puppeteer-coreを使用できます。puppeteer-coreは、Microsoft Edgeなどの既存のブラウザーインストールを起動するPuppeteerの軽量バージョンです。
Puppeteer の概要 - Microsoft Edge Development | Microsoft Learn

こう書かれているので(1)npmがインストールしようとしているChromiumuとEdgeがインストールしているChromiumuがコンフリクトする、(2) puppeteer-core はインストール可能、(3)md2pdfにも puppeteer の代わりに依存ライブラリとして認識してもらえるかもしれないと仮説を立てて、やってみた。

結論

Edgeが入っているWindows環境では md-to-pdf インストール時には先に puppeteer-core をインストールしておけば良さそう。

PS> npm list
`-- (empty)
PS> npm install puppeteer-core
PS> npm install md-to-pdf
PS> npm list
+-- md-to-pdf@5.2.4
`-- puppeteer-core@20.7.3

実行も問題なかった。

PS> npx md2pdf ".\hogehoge.md"
  √ generating PDF from .\hogehoge.md

参考情報

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0