banner
绘素

绘素的Blog

twitter
github
email

使用 honkit 将 Markdown ファイルを pdf/epub 電子書籍に変換します。

起因#

GitHub 上では、多くの電子書籍が Markdown 形式で書かれており、それらは通常、複数のフォルダと複数の md ファイルで構成されています。このようなリポジトリは、GitBook を使用してウェブページに構築され、オンラインで閲覧することができます。私はこれらのファイルを epub 形式に変換し、自分のリーダーにインポートして管理しやすくしたいと考えています。

ウェブ上で調べた結果、GitBook にはコマンドラインバージョンがあり、html/pdf/epub を生成することができることがわかりました。ダウンロードして初期化すると、次のエラーが発生します:

Installing GitBook 3.2.3
/opt/homebrew/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287
      if (cb) cb.apply(this, arguments)
                 ^

TypeError: cb.apply is not a function
    at /opt/homebrew/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqCallback.oncomplete (node:fs:192:5)

Node.js v19.7.0

エラーを調べると、gitbook コマンドラインの依存関係のバージョンが古すぎるため、gitbook コマンドラインはもう開発されていないことがわかりました。Stack Overflow でhonkitという GitBook のフォークが推奨されていることを発見しました。

流れ#

honkit のインストール#

honkit を使用する前に、Node.js をインストールする必要があります。

honkit をインストールします:

$ npm init --yes
$ npm install honkit --save-dev

Calibre のインストール#

Calibreをダウンロードしてインストールします。

Windows の場合は、Calibre のインストールパスを環境変数に追加する必要があります。

Mac の場合は、次のコマンドを使用します:

$ sudo ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/local/bin

変換:#

フォルダ内で初期化します:

$ npx honkit init

次のようなファイル構造が生成されます:

.
├── files
├── README.md
└── SUMMARY.md

ここで、README.mdファイルには書籍の前書きや紹介情報が含まれており、SUMMARY.mdファイルには書籍のコンテンツの目次が含まれています。

次に、書籍のコンテンツに基づいて目次を作成できます。書籍のコンテンツ構造が次のような場合を想定してみましょう:

.
├── ch1
   ├── ch1.1.md
   └── ch1.2.md
└── ch2
    └── ch2.1.md

SUMMARY.mdの内容は次のようになります:

# Summary

### ch1

* [ch1](ch1/ch1.1.md)
* [ch1](ch1/ch1.2.md)

### ch2

* [ch2](ch2/ch2.1.md)

書籍のコンテンツが多い場合は、ChatGPT を使用して目次ファイルの構築を高速化することができます。treeコマンドを使用してファイル構造を取得し、目次の要件とファイル構造を ChatGPT に送信すると、目次ファイルが生成されます。

カスタムの書籍メタデータを追加する場合は、現在のフォルダにbook.jsonファイルを作成する必要があります。

以下はサンプルです:

{
	"root": "./",
	"title": "xxx",
	"author": "xxx"
}

より詳細なカスタマイズオプションについては、公式ドキュメントを参照してください。

私の経験では、メタデータで中国語を使用するといくつかの問題が発生することがあります。そのため、デフォルトの設定で電子書籍を生成し、電子書籍を Calibre にインポートしてメタデータを編集することをお勧めします。編集が完了したら、書籍を変換してメタデータを適用することができます。これにより、より直感的で簡単になります。

カバーを追加したい場合は、ディレクトリにcover.jpgファイルを追加します。

設定が完了したら、電子書籍をビルドできます。次のコマンドを使用します:

$ npx honkit build
$ npx honkit pdf
$ npx honkit epub

これにより、html/pdf/epub ファイルが生成されます。

Docker の使用#

私は Docker バージョンを直接使用することをお勧めします。これにより、ディレクトリでコマンドを実行するだけで簡単になります。

docker pull honkit/honkit
docker run -v `pwd`:`pwd` -w `pwd` --rm -it honkit/honkit honkit build
docker run -v `pwd`:`pwd` -w `pwd` --rm -it honkit/honkit honkit pdf
docker run -v `pwd`:`pwd` -w `pwd` --rm -it honkit/honkit honkit epub

その他#

この方法は、ウェブコラムを epub 電子書籍に変換するためにも使用できます。手順は、まず Simple Read でウェブページを Markdown ファイルに変換して保存し、次に Honkit で epub に変換することです。これにより、Apple Books/Readwise Reader などのリーダーにインポートして注釈を管理することができます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。