目的
gitbook プロジェクトからPDFを生成したい。
困りごと
下記のコマンドを実行すればいいだけだが、エラーになる。
$gitbook pdf (中略) InstallRequiredError: "ebook-convert" is not installed. Install it from Calibre: https://calibre-ebook.com
エラーメッセージで検索すると「Calibre.app をインストールすれば大丈夫だよ」と書かれたブログ記事が大量にでてくる。が、実は Calibre.app はインストール済みなのである。gitbook pdf
コマンドのなかで利用するebook-convert
コマンドは、Calibre.app のなかに格納されているが、(当たり前だけど)app をインストールしただけでは、当該コマンドへのpathが通らないので、実行できないのだ。
対処法
1.調査
path を通したいけど、そもそも当該コマンドはどこにあるんや。調べてみたら、結構えぐいとこにあった。
https://manual.calibre-ebook.com/generated/en/cli-index.html
Note On macOS, the command line tools are inside the calibre bundle, for example, if you installed calibre in /Applications the command line tools are in /Applications/calibre.app/Contents/console.app/Contents/MacOS/.
つまりシェルから /Applications/calibre.app/Contents/console.app/Contents/MacOS
にアクセス可能になればいい。
2.対処
.bashrc
や .zshrc
に
export PATH=$PATH:/Applications/calibre.app/Contents/console.app/Contents/MacOS
と追記して読み込ませれば、PATHが通る。
もしくは既にPATHの通っている場所にリンクを作成するのも良い
sudo ln -s ~//Applications/calibre.app/Contents/console.app/Contents/MacOS/ebook-convert /usr/bin
3.結果
~ ❯ ebook-convert 使用法: ebook-convert 電子書籍のフォーマットを変換します。 出力する電子書籍のフォーマットは、出力ファイルの拡張子から推測されます。出力ファイルの拡張子をEXTとして、output_file は特別な形式 .EXT と指定することも可能です。この場合、出力ファイル名の本体部分は、入力ファイル名のものが使用されます。ファイル名の先頭にハイフンは使えませんので注意してください。output_file に拡張子をつけなかった場合、出力ファイル名はディレクトリとして見なされ、HTMLファイルで構成されれる "open ebook" (OEB) フォーマットで、指定したディレクトリに出力されます。 入力ファイルと出力ファイルを指定した後ろに、変換をカスタマイズするための様々なオプションを指定することができます。使用可能なオプションは、入出力のファイルタイプに依存します。使用可能なオプションとその使い方を見るためには、入出力のファイルを指定した後ろに、-h オプションを指定してください。 電子書籍変換システムについての完全なドキュメントは下記を参照してください https://manual.calibre-ebook.com/conversion.html スペースを含む引数を ebook-convert に渡す場合には、クォーテーションマークでくくってください。例: "/some path/with spaces" オプション: --version プログラムのバージョン番号を表示して終了 -h, --help このヘルプメッセージを表示して終了 --list-recipes ビルトイン・レシピ名の一覧を表示。以下のようにしてビルトイン・レシピから電子書籍を作成できます。: ebook- convert "Recipe Name.recipe" output.epub 開発者: Kovid Goyal <kovid@kovidgoyal.net> ~ ❯ which ebook-convert /Applications/calibre.app/Contents/console.app/Contents/MacOS/ebook-convert