chenkun372 / blog

my blog 博客搭建的坑,还有自我学习的经验,领悟。
7 stars 1 forks source link

神器 pypandoc , 实现电子书自由 #5

Open chenkun372 opened 2 years ago

chenkun372 commented 2 years ago

首先得知道,多看支持什么样的电子书格式,百度一下,特别全,为了更好的体验,决定转为 epub。

那么如何将 Markdown 转 epub 呢?一搜,发现有众多在线转服务,尝试了几个,不是收费就是各种限制,很不方便。

改变检索思路,很快发现了一个命令行工具 —— pandoc,进一步研究,发现竟然有 Python 版的 —— pypandoc,真是太棒了,研究一番,发现完全满足我的需求。

于是解决方案就是:

下载 markdown 版电子书 用 pypandoc 转化为 epub 格式 导入 多看, 阅读 开干!

神器出场

之所以喜欢 Python 有一个重要的原因就是安装和使用扩展很方便,几乎每个神器出场的方式都是一样的哈哈:

pip install pypandoc 友情提示: 最好创建一个虚拟环境来安装,这样不好影响其他库,也方便迁移,理解和创建虚拟环境可以参考《 最好用的 Python 虚拟环境,没有之一》 安装成功之后,可以测试一下:

import pypandoc print(pypandoc.get_pandoc_version()) 2.14.2 可见,我安装的版本是: 2.14.2

pandoc 是一个常用的软件,很多操作系统比如 Windows 可能已经内置 另外也可以单独安装,使用它的命令行工具,更多的 Pandoc 安装方式 和用法可以参考 pypandoc 说明[2] 和 Pandoc 文档[3]

小试牛刀

翻看 pypandoc 说明,发现有个 convert_text 方法,可以用字符串的方式提供待转化的文本。

那先写一段 markdown 试试:

import pypandoc

input = "Hello World!" output = pypandoc.convert_text(input, 'html', format='md')

print(output) 显示结果如下:

Hello World!

太棒了,将 Hello World! 转化成了一段 html 代码了。

再试点复杂的:

import pypandoc

input = """

Pandoc

Pandoc 是个牛X的工具

用法

Pandoc

Pandoc 是个牛X的工具

用法

换一种输出格式呢?

output = pypandoc.convert_text(input, 'rst', format='md') 看看输出:

Pandoc

Pandoc 是个牛X的工具

用法

ePub 格式无法输出为字符串,需要存入文件,所以需要用 加入 outputfile 参数 代码如下:

convert_test(input, 'epub', format='md', outputfile='test.epub') 用 EPUB File Reader 打开看看效果:

epub

生成电子书

测试了没问题后,就转化一个 Markdown 文件试试。

对于文件,需要用 convert_file 方法:

import pypandoc

convert_file('everyone-can-use-english.md', 'epub', 'md', outputfile='人人都能用英语.epub') 很快就能生成一个 epub 格式的电子书。

这里需要注意的是:引用的

如果是网络上的,需要将地址换成全网址,如果是相对的,需要保持目录结构,并提前准备好。

不然将无法生成,使电子书失去一定的可读性。

生成好了之后,可以将 人人都能用英语.epub 发送到手机上,用多看打开。

看看效果:

微信图片_20220101131517

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

多看书架

简直太棒了,可以安心的读书了!

这下岂不实现了电子书自由啦!

总结

今天介绍了 pyPandoc 的简单用法 pyPandoc 不仅帮助我创建了电子书,而且让我理解了 Markdown 转化为 Html 的对应关系,为进步步打造自己的写作系统奠定了基础。

Pandoc 是个强大的工具,利用好,可以帮助我们实现电子书自由,加上会 Python 编程,就更厉害了。

期望这篇文章对你有用,祝你打造出自己的电子书系统,比心!