自己动手制作电子书的最佳方式(支持PDF、ePub、mobi等格式)
前言
对于经常阅读的人来说,制作本地电子书,算是刚需了。网上的很多教程都不太好用,所以我特地整理出一个详细的教程。亲测有效,一劳永逸。
当你意外发现某个宝藏公众号时,想要集中阅读上面的每一篇文章,恨不得一口气看完,你会怎么做呢?你可能会把它添加到“微信读书”App 的书架上:

但上面这种曲线救国的方式并非最佳,仍然不尽人意,存在不少问题。
我知道,现在有很多的第三方服务,可以将任意公众号的文章制作成电子书,我试过很多次,但都是付费的。一听说要钱,你又不干了:

再列举一种场景:当你在 GitHub 上发现一个很全面很丰富的项目文档时,仿佛发现了新大陆。可 GitHub 网站的服务器在国外,国内的访问速度实在感人,你想要把它下载到本地查看,会怎么做呢?你估计会选择git clone或者直接选择“Download ZIP”,然后用 Typora 或者 VS Code 软件打开这个项目文档,在本地查看:

总之,你能想到的方式,我都想到了,而且都尝试过。
现在的需求就是,如果你经常阅读网上的资料,肯定会有这样一个需求:怎么把这些几百页、甚至几千页的内容整理成 PDF、ePub、mobi等格式的电子书呢?
要么花钱请别人做,要么自己做。
今天这篇文章,就是来告诉你”自己动手制作 PDF、ePub、mobi 等格式电子书“的最佳方式。如果你是码农出身,下面讲的这些步骤,根本难不倒你。如果你不是码农出身,也没关系,只要你有一台电脑,跟着我讲的教程研究下去,肯定能搞定。
问题的关键不在于难不难、会不会,而是在于你是不是爱折腾。
制作电子书的具体步骤
整体流程
先说一下整体步骤:
(1)安装 gitbook 工具。
(2)安装 calibre 软件,配置 ebook-convert工具。
(3)将md格式的多个文件素材导出为电子书(支持 PDF、ePub、mobi 等格式)。
(4)高级进阶:配置电子书的目录、封面、页眉页脚等。
整理流程如下:

接下来我们看看详细的完整步骤。
编译环境
node.js和calibre版本:
- node:v12.18.4
- calibre:5.11.0
gitbook -V:
- CLI version: 2.3.2
- GitBook version: 3.2.3
步骤 1:通过 npm 安装 gitbook-cli
安装命令如下:
1 | npm install -g gitbook-cli |
安装成功之后,再执行gitbook -V命令确认是否安装成功,此时会自动安装 GitBook:
1 | gitbook -V |
备注:如果你不知道 npm 是什么,可以自行查阅如何安装 Node.js 和 npm 环境。
如果你在执行gitbook -V命令的时候提示错误TypeError: cb.apply is not a function,有两个解决办法:
方法1:原因是 Node.js版本不对。Node.js 建议安装 10.X版本(比如 10.21.0 版本)。参考链接:https://www.bilibili.com/read/cv6932054/
方法2:打开文件
node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js,将下面这三行代码注释掉:
1 | fs.stat = statFix(fs.stat) |
参考链接:https://flaviocopes.com/cb-apply-not-a-function/
步骤 2:安装 ebook-convert(针对 Windows 用户)
ebook-convert 是能够自由转化格式的一个命令行工具,已经包含在 calibre 软件里面了。
(1)安装 calibre 软件。calibre 的官网如下:(我们可以去官网下载安装)
(2)在终端输入ebook-convert --version命令,验证 ebook-convert 是否能正常使用:
1 | ebook-convert --version |
如果输入上面的命令后提示错误,说明你还需要将 calibre 的安装目录添加到系统的环境变量中。
步骤 2:安装 ebook-convert(针对 Mac 用户)
ebook-convert 是能够自由转化格式的一个命令行工具,已经包含在 calibre 软件里面了。
(1)安装 calibre 软件。calibre 的官网如下:(我们可以去官网下载安装)
(2)配置 ebook-convert。针对 Mac 系统,需要执行如下命令,把 ebook-convert 软链接到 bin 目录:
1 | sudo ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert... |