對于經(jīng)常閱讀的人來說,制作本地電子書,算是剛需了。網(wǎng)上的很多教程都不太好用,所以我特地整理出一個(gè)詳細(xì)的教程。親測有效,一勞永逸。
當(dāng)你意外發(fā)現(xiàn)某個(gè)寶藏公眾號時(shí),想要集中閱讀上面的每一篇文章,恨不得一口氣看完,你會怎么做呢?你可能會把它添加到“微信讀書”App 的書架上:
但上面這種曲線救國的方式并非最佳,仍然不盡人意,存在不少問題。
我知道,現(xiàn)在有很多的第三方服務(wù),可以將任意公眾號的文章制作成電子書,我試過很多次,但都是付費(fèi)的。一聽說要錢,你又不干了:
再列舉一種場景:當(dāng)你在 GitHub 上發(fā)現(xiàn)一個(gè)很全面很豐富的項(xiàng)目文檔時(shí),仿佛發(fā)現(xiàn)了新大陸???GitHub 網(wǎng)站的的服務(wù)器在國外,國內(nèi)的訪問速度實(shí)在感人,你想要把它下載到本地查看,會怎么做呢?你估計(jì)會直接選擇“Download ZIP”,然后用 Typora 或者 VS Code 軟件打開這個(gè)項(xiàng)目文檔,在本地查看:
總之,你能想到的方式,我都想到了,而且都嘗試過。
現(xiàn)在的需求就是,如果你經(jīng)常閱讀網(wǎng)上的資料,肯定會有這樣一個(gè)需求:怎么把這些幾百頁、甚至幾千頁的內(nèi)容整理成 PDF、ePub、mobi 等格式的電子書呢?
要么花錢請別人做,要么自己做。
今天這篇文章,就是來告訴你”自己動手制作 PDF、ePub、mobi 等格式電子書“的最佳方式。如果你是碼農(nóng)出身,下面講的這些步驟,根本難不倒你。如果你不是碼農(nóng)出身,也沒關(guān)系,只要你有一臺電腦,跟著我講的教程研究下去,肯定能搞定。
問題的關(guān)鍵不在于難不難、會不會,而是在于你是不是愛折騰。
先說一下整體步驟:
(1)安裝 gitbook 工具。
(2)安裝 calibre 軟件,配置 ebook-convert
工具。
(3)將md
格式的多個(gè)文件素材導(dǎo)出為電子書(支持 PDF、ePub、mobi 等格式)。
(4)高級進(jìn)階:配置電子書的目錄、封面、頁眉頁腳等。
整理流程如下:
接下來我們看看詳細(xì)的完整步驟。
安裝命令如下:
npm install -g gitbook-cli
安裝成功之后,再執(zhí)行gitbook -V
命令確認(rèn)是否安裝成功:
gitbook -V
CLI version: 2.3.2
GitBook version: 3.2.3
備注:如果你不知道 npm
是什么,可以自行查閱如何安裝 Node.js 和 npm 環(huán)境。
ebook-convert 是能夠自由轉(zhuǎn)化格式的一個(gè)命令行工具,已經(jīng)包含在 calibre 軟件里面了。
(1)安裝 calibre
軟件。calibre 的官網(wǎng)如下:(我們可以去官網(wǎng)下載安裝)
https://calibre-ebook.com/
(2)在終端輸入如下命令,驗(yàn)證 ebook-convert
是否能正常使用:
ebook-convert --version
如果輸入上面的命令后提示錯(cuò)誤,說明你還需要將 calibre 的安裝目錄添加到系統(tǒng)的環(huán)境變量中。
ebook-convert 是能夠自由轉(zhuǎn)化格式的一個(gè)命令行工具,已經(jīng)包含在 calibre 軟件里面了。
(1)安裝 calibre
軟件。calibre 的官網(wǎng)如下:(我們可以去官網(wǎng)下載安裝)
https://calibre-ebook.com/
(2)配置 ebook-convert
。針對 Mac 系統(tǒng),需要執(zhí)行如下命令,把 ebook-convert
軟鏈接到 bin
目錄:
sudo ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/bin
如果出現(xiàn)Operation not permitted
異常,說明系統(tǒng)權(quán)限限制,此時(shí)需要配置環(huán)境變量。
(3)環(huán)境變量配置:
vim ~/.bash_profile
# 將下面這兩行配置,添加到 .bash_profile 文件中
export EBOOK_PATH=/Applications/calibre.app/Contents/MacOS
export PATH=$PATH:$EBOOK_PATH
備注:可以自行研究下,在命令行環(huán)境,如何通過 vim 編輯文件。
然后刷新一下剛剛的配置:
source ~/.bash_profile
驗(yàn)證ebook-convert
是否能正常使用:
ebook-convert --version
本地新建一個(gè)空的文件夾,作為我們的電子書項(xiàng)目。文件夾的名字隨便起,但建議用英文命名。
(1)項(xiàng)目初始化。
在當(dāng)前項(xiàng)目下,執(zhí)行如下命令,進(jìn)行初始化:
gitbook init
此時(shí),項(xiàng)目下會自動生成如下兩個(gè)文件:(非常重要,必不可少)
README.md
:書籍的簡介放在這個(gè)文件里。
SUMMARY.md
:書籍的目錄結(jié)構(gòu)在這里配置。
這兩個(gè)文件創(chuàng)建后,內(nèi)容為空白,可使用 Markdown 語言自定義內(nèi)容。
(2)配置電子書的目錄。
我們先把本地的 markdown 文件(也就是我們的電子書素材)放到項(xiàng)目中,然后在SUMMARY.md
文件中配置電子書的目錄。
比如說, 我的項(xiàng)目中有下面這些文件:
那么,我在SUMMARY.md
文件中就要這樣配置:
# 目錄
* [README](./README.md)
* [00-前端工具](00-前端工具/0-README.md)
* [01-VS Code的使用](00-前端工具/01-VS Code的使用.md)
* [02-Git的使用](00-前端工具/02-Git的使用.md)
* [01-HTML](01-HTML/0-README.md)
* [01-認(rèn)識Web和Web標(biāo)準(zhǔn)](01-HTML/01-認(rèn)識Web和Web標(biāo)準(zhǔn).md)
* [02-瀏覽器的介紹](01-HTML/02-瀏覽器的介紹.md)
* [03-初識HTML](01-HTML/03-初識HTML.md)
* [02-CSS基礎(chǔ)](02-CSS基礎(chǔ)/0-README.md)
* [01-CSS屬性:字體屬性和文本屬性](02-CSS基礎(chǔ)/01-CSS屬性:字體屬性和文本屬性.md)
* [02-CSS屬性:背景屬性](02-CSS基礎(chǔ)/02-CSS屬性:背景屬性.md)
* [03-CSS樣式表和選擇器](02-CSS基礎(chǔ)/03-CSS樣式表和選擇器.md)
* [03-JavaScript基礎(chǔ)](03-JavaScript基礎(chǔ)/0-README.md)
* [00-編程語言](03-JavaScript基礎(chǔ)/00-編程語言.md)
* [01-JS簡介](03-JavaScript基礎(chǔ)/01-JS簡介.md)
* [02-變量](03-JavaScript基礎(chǔ)/02-變量.md)
* [03-變量的數(shù)據(jù)類型:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型](03-JavaScript基礎(chǔ)/03-變量的數(shù)據(jù)類型:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型.md)
制作成的目錄,將會是下面這種效果:
(1)本地預(yù)覽電子書:
gitbook serve
執(zhí)行上方命令后,工具會對項(xiàng)目里的 Markdown 格式的文件進(jìn)行轉(zhuǎn)換,默認(rèn)轉(zhuǎn)換為 html 格式,最后提示 Serving book on http://localhost:4000
。
我們打開瀏覽器輸入http://localhost:4000
,預(yù)覽一下電子書的效果:
(2)制作并導(dǎo)出電子書。接下來就是見證奇跡的時(shí)刻。
生成 PDF 格式的電子書:(PDF 是最常見的文檔格式)
gitbook pdf ./ ./mybook.pdf
生成 epub 格式的電子書:(epub 是最常見、最通用的電子書格式)
gitbook epub ./ ./mybook.epub
生成 mobi 格式的電子書:(mobi 格式可以在 kindle 中打開)
gitbook mobi ./ ./mybook.mobi
上面這三種格式的電子書生成之后,項(xiàng)目里會看到這三個(gè)新增的文件:
我們把電子書打開,驗(yàn)收一下成果。
打開 pdf 電子書看看效果:
打開 epub 電子書看看效果:
怎么樣,自制電子書就這樣做好了,是不是很有成就感?
電子書做好之后,我猜你肯定想進(jìn)一步做個(gè)性化配置,比如:怎么加封面?怎么修改頁眉頁腳?還有其他的一些配置。
我們來看看親手制作的電子書,有哪些常見的高級配置。
為了讓書籍顯示得更加優(yōu)雅,我們可以指定一個(gè)自定義的封面。操作如下:
在項(xiàng)目的根目錄下準(zhǔn)備好 cover.jpg
(大封面)和 cover_small.jpg
(小封面)這兩種封面圖片。注意,圖片的文件名和后綴名必須嚴(yán)格按照這句話來。
GitBook 的官方文檔建議:cover.jpg
(大封面)的尺寸為 1800x2360 像素,cover_small.jpg
(小封面)的尺寸為 200x262 像素。圖片的制作,建議遵循如下規(guī)范:
我們可以在項(xiàng)目的根目錄下新建一個(gè)文件book.json
(注意,文件名是book
,后綴名是json
),這個(gè)book.json
就是電子書的配置文件,可以在里面填一些常見的配置。
關(guān)于 book.json 的配置項(xiàng)有很多,我們可以在網(wǎng)上搜索“GitBook book.json”找到。這里大致列舉一些。
1、常規(guī)配置如下:
配置 book.json 的示例如下:
{
'title': '前端入門和進(jìn)階圖文教程',
'description': '前端入門到進(jìn)階圖文教程,超詳細(xì)的Web前端學(xué)習(xí)筆記。從零開始學(xué)前端,做一名精致優(yōu)雅的前端工程師。公眾號「千古壹號」作者。',
'author': '千古壹號',
'language': 'zh-hans',
'gitbook': '3.2.3',
'root': '.'
}
備注:上面的root
根目錄為當(dāng)前目錄,使用默認(rèn)的就好,此項(xiàng)可以刪掉,這里僅做演示。
2、pdf 的配置如下:(使用 book.json
中的一組選項(xiàng)來定制 PDF 輸出)
配置項(xiàng) | 描述 |
---|---|
pdf.pageNumbers | 將頁碼添加到每個(gè)頁面的底部(默認(rèn)為 true) |
pdf.fontSize | 基本字體大小(默認(rèn)是 12) |
pdf.fontFamily | 基本字體樣式(默認(rèn)是 Arial) |
pdf.paperSize | 頁面尺寸,選項(xiàng)有:a0、a1、 a2、 a3、a4、a5、a6、b0、b1、b2、b3、b4、b5、b6、legal、letter (默認(rèn)值是 a4) |
pdf.margin.top | 上邊距(默認(rèn)值是 56) |
pdf.margin.bottom | 下邊距(默認(rèn)值是 56) |
pdf.margin.left | 左邊距(默認(rèn)值是 62) |
pdf.margin.right | 右邊距(默認(rèn)值是 62) |
定制 PDF 文檔輸出格式的示例代碼如下:
{
'pdf': {
'pageNumbers': false,
'fontSize': 12,
'paperSize': 'a4',
'margin': {
'top': 36,
'bottom': 36,
'left': 62,
'right': 62
}
}
}
備注:如果你不需要對輸出的 pdf 做任何特定的配置,則不需要添加上面的內(nèi)容,讓 pdf 的輸出格式保持默認(rèn)就好。
3、plugins 插件:
插件及其配置在 book.json
中指定,讓電子書的配置能力更加強(qiáng)大。
通過插件,我們可以做很多事情,比如:修改頁眉頁腳、自動生成并顯示圖片的標(biāo)題等。
另外,針對在線版的 GitBook 電子書,也有很多插件,這里列舉幾個(gè):
search-pro
插件橫空出世,讓搜索功能煥發(fā)出新的生機(jī)。插件地址:地址:https://github.com/gitbook-plugins/gitbook-plugin-search-prosplitter
。插件地址:https://github.com/yoshidax/gitbook-plugin-splitter關(guān)于插件的具體配置,感興趣的同學(xué)可以自行研究下。
如果你的電子書素材里有很多 markdown 文件,那么,如何將多個(gè) markdown 文件的文件名,在SUMMARY.md
里快速生成對應(yīng)的目錄?
難道要一個(gè)一個(gè)地手動 copy 嗎?這不可能。
說白了,這個(gè)需求就是:如何自動生成電子書的目錄?改變世界的程序員用「腳本」就能搞定,一鍵執(zhí)行。
網(wǎng)上有很多好用的腳本,我給你推薦一個(gè)親測好用的腳本:
GitBook 自動生成目錄的腳本:https://github.com/fushenghua/gitbook-plugin-summary
操作方法很簡單,把上面這個(gè)鏈接中的項(xiàng)目下載下來,進(jìn)入到這個(gè)項(xiàng)目的目錄,執(zhí)行 $ python gitbook-plugin-summary.py dirPath
即可自動生成電子書的目錄,親測有效。備注:這里的dirPath
指的是你的電子書目錄的絕對路徑。
對了,在執(zhí)行上面這個(gè)腳本之前,記得先安裝 Python
環(huán)境。
Windows 平臺:可以用「福昕閱讀器」或者「Acrobat Reader DC」?!父j块喿x器」既有 Windows 平臺,也有 Mac 平臺。
Mac 平臺:可以用自帶的「預(yù)覽」打開。
其實(shí),不管你用的是 Windows 電腦還是 Mac 電腦,你都可以用 Chrome 瀏覽器打開 PDF。
iPhone 或 iPad 平臺:可以用自帶的「iBooks」打開,或者用「WPS Office」打開。也可以用第三方軟件「GoodReader」,不過需要 40 人民幣。
Android 手機(jī):可以用「WPS Office」等第三方辦公軟件打開。
Windows 平臺:可以用「calibre」軟件閱讀 epub 電子書。
Mac & iPhone & iPad 平臺:用自帶的「iBooks」閱讀即可。iBooks 可以非常方便地對電子書進(jìn)行標(biāo)注和搜索,無疑是體驗(yàn)最好的 ePub 電子書閱讀軟件。
Android 手機(jī):可以用「多看閱讀」App 來閱讀 epub 格式電子書。
kindle 電子書有兩種常見的電子書格式:「mobi」格式和「azw3」格式。
針對 mobi 格式的電子書,你既可以通過郵件的形式將其發(fā)送到 kindle 閱讀器(可以自行網(wǎng)上查一下相關(guān)教程),也可以將其拷貝到 kindle 閱讀器(是連接 usb 進(jìn)行拷貝)。
針對 azw3 格式的電子書,就只能通過拷貝的形式(是連接 usb 拷貝)傳輸?shù)?kindle 閱讀器。
我在 2017 年 1 月寫過一篇電子書科普的文章,快三年過去了,如今回過頭來看,那篇文章一點(diǎn)也不過時(shí),不妨看看:《電子書有哪些常見格式?以及該怎樣閱讀它》
如果你一時(shí)半會兒找不到可用的素材來制作電子書,可以拿我的項(xiàng)目練練手。項(xiàng)目地址:
https://github.com/qianguyihao/web
我用上面的項(xiàng)目制作成了一個(gè)電子書。在“千古壹號”的公眾號后臺回復(fù)“pdf”,給你看看我制作的電子書效果。
不瞞你說,這篇文章,我在一年多以前就寫好了初稿并放在了 GitHub 上,當(dāng)時(shí)專門折騰過一次。
最近幾天,我突然又有了制作電子書的需求。一年多過去了,我還以為有啥新的方法可以試試,然而我在網(wǎng)上找了一圈,好用的方法還是沒變。所以,我今天整理一下發(fā)出來,希望讓更多人看到。
其他的各種自制電子書的方法我都試過了,都不太好使,唯獨(dú) GitBook + calibre 是最佳選擇,信我沒錯(cuò)!
GITBOOK 使用:https://kuang.netlify.app/blog/gitbook.html
GitBook 制作 Kindle 電子書詳細(xì)教程:https://github.com/fushenghua/gitbook-plugin-summary/blob/master/gitbook-guide.md
gitbook-plugin-summary 工具(自動生成目錄):https://github.com/fushenghua/gitbook-plugin-summary
gitbook-plugin-atoc(自動生成目錄的插件):https://github.com/willin/gitbook-plugin-atoc
自動生成目錄:https://github.com/mofhu/GitBook-auto-summary
使用 Gitbook 打造你的電子書:https://juejin.im/post/6844903793033740302
書籍《了不起的 Markdown》的第 8 章:自由地寫作——GitBook
gitbook 的 book.json 配置示例:https://blog.ujwd.cn/archives/349
關(guān)于更加詳細(xì)的 book.json 文件配置:https://zhousiwei.gitee.io/mybook/notes/gitbook_config.html
GitBook 簡明使用教程:https://www.phpjieshuo.com/archives/153/
gitbook 入門教程之導(dǎo)出電子書:https://juejin.im/post/5caa0fb46fb9a05e5a2e53b3
GitBook 插件整理 - book.json 配置:https://www.cnblogs.com/mingyue5826/p/10307051.html
如何把 Markdown 文件批量轉(zhuǎn)換為 PDF(不好用):https://sspai.com/post/47110