這個(gè)神器幫我實(shí)現(xiàn)電子書自由
↑ 關(guān)注 + 星標(biāo) ,每天學(xué)Python新技能
后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包
在信息時(shí)代的我們,獲取知識(shí),提升認(rèn)知如同吃飯一樣,成為了必須做的事情,閱讀是最常用的獲取知識(shí)的方式,沒用之一。
可是有時(shí)因?yàn)橐恍┘夹g(shù)問題,導(dǎo)致我們閱讀不便。
比如前幾天,我想讀一本 《人人都能用英語[1]》,找到了用 Markdown 寫的原文,雖然可以閱讀,但如何在手機(jī)上閱讀,是個(gè)問題。
轉(zhuǎn)為 Pdf,或者 html,雖然是可以,不過閱讀起來很不方便,也記不住上次讀到哪里了,更要命的是無法做筆記。
也搜了紙質(zhì)書,因?yàn)檫@本書沒用正式出版,所以也都是盜版的,就算了。
因?yàn)槲医?jīng)常用 多看APP 讀書,如果能直接在多看上看就好了。
嘗試了一圈,發(fā)現(xiàn)了一個(gè)好方法,現(xiàn)在我已經(jīng)閱讀過半了,體驗(yàn)很好,現(xiàn)在分享一下我的魔法過程。
# 解題思路
首先得知道,多看支持什么樣的電子書格式,百度一下,特別全,為了更好的體驗(yàn),決定轉(zhuǎn)為 epub。
那么如何將 Markdown 轉(zhuǎn) epub 呢?一搜,發(fā)現(xiàn)有眾多在線轉(zhuǎn)服務(wù),嘗試了幾個(gè),不是收費(fèi)就是各種限制,很不方便。
咱不是會(huì)編程嗎?如果能自己搞豈不更好?
改變檢索思路,很快發(fā)現(xiàn)了一個(gè)命令行工具 —— pandoc,進(jìn)一步研究,發(fā)現(xiàn)竟然有 Python 版的 —— pypandoc,真是太棒了,研究一番,發(fā)現(xiàn)完全滿足我的需求。
于是解決方案就是:
下載 markdown 版電子書
用 pypandoc 轉(zhuǎn)化為 epub 格式
導(dǎo)入 多看, 閱讀
開干!
# 神器出場(chǎng)
之所以喜歡 Python 有一個(gè)重要的原因就是安裝和使用擴(kuò)展很方便,幾乎每個(gè)神器出場(chǎng)的方式都是一樣的哈哈:
pip install pypandoc
友情提示:
最好創(chuàng)建一個(gè)虛擬環(huán)境來安裝,這樣不好影響其他庫(kù),也方便遷移,理解和創(chuàng)建虛擬環(huán)境可以參考《 最好用的 Python 虛擬環(huán)境,沒有之一》
安裝成功之后,可以測(cè)試一下:
>>> import pypandoc
>>> print(pypandoc.get_pandoc_version())
2.14.2
可見,我安裝的版本是: 2.14.2
pandoc 是一個(gè)常用的軟件,很多操作系統(tǒng)比如 Windows 可能已經(jīng)內(nèi)置
另外也可以單獨(dú)安裝,使用它的命令行工具,更多的 Pandoc 安裝方式 和用法可以參考 pypandoc 說明[2] 和 Pandoc 文檔[3]
# 小試牛刀
翻看 pypandoc 說明,發(fā)現(xiàn)有個(gè) convert_text 方法,可以用字符串的方式提供待轉(zhuǎn)化的文本。
那先寫一段 markdown 試試:
import pypandoc
input = "**Hello World!**"
output = pypandoc.convert_text(input, 'html', format='md')
print(output)
顯示結(jié)果如下:
<p><strong>Hello World!</strong></p>
太棒了,將 **Hello World!** 轉(zhuǎn)化成了一段 html 代碼了。
再試點(diǎn)復(fù)雜的:
import pypandoc
input = """
# Pandoc
Pandoc 是個(gè)牛X的工具
## 用法
- `convert_text`
- `convert_file`
"""
output = pypandoc.convert_text(input, 'html', format='md')
print(output)
看看輸出:
<h1 id="pandoc">Pandoc</h1>
<p>Pandoc 是個(gè)牛X的工具</p>
<h2 id="用法">用法</h2>
<ul>
<li><code>convert_text</code></li>
<li><code>convert_file</code></li>
</ul>
換一種輸出格式呢?
output = pypandoc.convert_text(input, 'rst', format='md')
看看輸出:
Pandoc
======
Pandoc 是個(gè)牛X的工具
用法
----
- ``convert_text``
- ``convert_file``
最好試試轉(zhuǎn)化為 ePub 格式
ePub 格式無法輸出為字符串,需要存入文件,所以需要用 加入
outputfile參數(shù)
代碼如下:
convert_test(input, 'epub', format='md', outputfile='test.epub')
用 EPUB File Reader 打開看看效果:

epub
# 生成電子書
測(cè)試了沒問題后,就轉(zhuǎn)化一個(gè) Markdown 文件試試。
對(duì)于文件,需要用 convert_file 方法:
import pypandoc
convert_file('everyone-can-use-english.md', 'epub', 'md', outputfile='人人都能用英語.epub')
很快就能生成一個(gè) epub 格式的電子書。
這里需要注意的是:引用的
如果是網(wǎng)絡(luò)上的,需要將地址換成全網(wǎng)址,如果是相對(duì)的,需要保持目錄結(jié)構(gòu),并提前準(zhǔn)備好。
不然將無法生成,使電子書失去一定的可讀性。
生成好了之后,可以將 人人都能用英語.epub 發(fā)送到手機(jī)上,用多看打開。
看看效果:

之后就可以在書架里看到了:

多看書架
簡(jiǎn)直太棒了,可以安心的讀書了!
這下豈不實(shí)現(xiàn)了電子書自由啦!
# 總結(jié)
今天介紹了 pyPandoc 的簡(jiǎn)單用法 pyPandoc 不僅幫助我創(chuàng)建了電子書,而且讓我理解了 Markdown 轉(zhuǎn)化為 Html 的對(duì)應(yīng)關(guān)系,為進(jìn)步步打造自己的寫作系統(tǒng)奠定了基礎(chǔ)。
Pandoc 是個(gè)強(qiáng)大的工具,利用好,可以幫助我們實(shí)現(xiàn)電子書自由,加上會(huì) Python 編程,就更厲害了。
期望這篇文章對(duì)你有用,祝你打造出自己的電子書系統(tǒng),比心!
參考資料
[1]人人都能用英語: https://lixiaolai.com/#/everyone-can-use-english/
[2]pypandoc 說明: https://github.com/NicklasTegner/pypandoc
[3]Pandoc 文檔: https://pandoc.org/index.html
推薦閱讀
推薦閱讀
