神器 pypandoc —— 实现电子书自由
文 | 李晓飞
来源:Python 技术「ID: pythonall」
知识就是力量,甚至说 知识就是金钱 更为合适。
在信息时代的我们,获取知识,提升认知如同吃饭一样,成为了必须做的事情,阅读是最常用的获取知识的方式,没用之一。
可是有时因为一些技术问题,导致我们阅读不便。
比如前几天,我想读一本 《人人都能用英语[1]》,找到了用 Markdown 写的原文,虽然可以阅读,但如何在手机上阅读,是个问题。
转为 Pdf,或者 html,虽然是可以,不过阅读起来很不方便,也记不住上次读到哪里了,更要命的是无法做笔记。
也搜了纸质书,因为这本书没用正式出版,所以也都是盗版的,就算了。
因为我经常用 多看APP 读书,如果能直接在多看上看就好了。
尝试了一圈,发现了一个好方法,现在我已经阅读过半了,体验很好,现在分享一下我的魔法过程。
解题思路
首先得知道,多看支持什么样的电子书格式,百度一下,特别全,为了更好的体验,决定转为 epub。
那么如何将 Markdown 转 epub 呢?一搜,发现有众多在线转服务,尝试了几个,不是收费就是各种限制,很不方便。
咱不是会编程吗?如果能自己搞岂不更好?
改变检索思路,很快发现了一个命令行工具 —— pandoc
,进一步研究,发现竟然有 Python 版的 —— pypandoc,真是太棒了,研究一番,发现完全满足我的需求。
于是解决方案就是:
下载 markdown 版电子书
用 pypandoc 转化为 epub 格式
导入 多看, 阅读
开干!
神器出场
之所以喜欢 Python 有一个重要的原因就是安装和使用扩展很方便,几乎每个神器出场的方式都是一样的哈哈:
pip install pypandoc
友情提示:
最好创建一个虚拟环境来安装,这样不好影响其他库,也方便迁移,理解和创建虚拟环境可以参考 https://mp.weixin.qq.com/s/WflK5pOKhvPg8zrf_W5mfw
安装成功之后,可以测试一下:
>>> 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 pypandocinput = "**Hello World!**"
output = pypandoc.convert_text(input, 'html', format='md')print(output)
显示结果如下:
<p><strong>Hello World!</strong></p>
太棒了,将 **Hello World!**
转化成了一段 html 代码了。
再试点复杂的:
import pypandocinput = """
# PandocPandoc 是个牛X的工具## 用法- `convert_text`
- `convert_file`
"""
output = pypandoc.convert_text(input, 'html', format='md')
print(output)
看看输出:
<h1 id="pandoc">Pandoc</h1>
<p>Pandoc 是个牛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 是个牛X的工具用法
----- ``convert_text``
- ``convert_file``
最好试试转化为 ePub 格式
ePub 格式无法输出为字符串,需要存入文件,所以需要用 加入
outputfile
参数
代码如下:
convert_test(input, 'epub', format='md', outputfile='test.epub')
用 EPUB File Reader 打开看看效果:
生成电子书
测试了没问题后,就转化一个 Markdown 文件试试。
对于文件,需要用 convert_file
方法:
import pypandocconvert_file('everyone-can-use-english.md', 'epub', 'md', outputfile='人人都能用英语.epub')
很快就能生成一个 epub 格式的电子书。
这里需要注意的是:引用的图片
如果是网络上的,需要将图片地址换成全网址,如果是相对的,需要保持目录结构,并提前准备好图片。
不然将无法生成图片,使电子书失去一定的可读性。
生成好了之后,可以将 人人都能用英语.epub
发送到手机上,用多看打开。
看看效果:
之后就可以在书架里看到了:
简直太棒了,可以安心的读书了!
这下岂不实现了电子书自由啦!
总结
今天介绍了 pyPandoc
的简单用法 pyPandoc 不仅帮助我创建了电子书,而且让我理解了 Markdown 转化为 Html 的对应关系,为进步步打造自己的写作系统奠定了基础。
Pandoc 是个强大的工具,利用好,可以帮助我们实现电子书自由,加上会 Python 编程,就更厉害了。
期望这篇文章对你有用,祝你打造出自己的电子书系统,比心!
参考资料
[1]
人人都能用英语: https://lixiaolai.com/#/everyone-can-use-english/
[2]
pypandoc 说明: https://github.com/NicklasTegner/pypandoc
[3]
Pandoc 文档: https://pandoc.org/index.html
PS:公号内回复「Python」即可进入Python 新手学习交流群,一起 100 天计划!
老规矩,兄弟们还记得么,右下角的 “在看” 点一下,如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!
【代码获取方式】
识别文末二维码,回复:太阳雪
神器 pypandoc —— 实现电子书自由相关推荐
- 提取地图中道路_国产地图神器在线PK谷歌地图,我的分析图有救拉~
来源:设计气象台(DesignOB) 文章转载已授权 | 每天5分钟,学习最新的设计知识 | 前期分析图,对于很多设计师来说并不是什么困难的事.但如果想做出惊艳的效果,一张好看的肌理底图必不可少. 附 ...
- git 移动分支指针_图解4种git合并分支方法
有时候我们会后悔,有时候我们会想回到过去,有时候我们想改变历史,然而在我们这个世界,目前来看是无法回到过去改变历史的 但在git的世界里,一切皆有可能,我们可以在多维空间里任意切换,随意改变一个宇宙的 ...
- APP:分享六款非常实用的冷门APP软件,值得一试!
今天小编给大家分享分享六款非常实用的冷门APP软件,值得一试! 1.泼辣修图 泼辣修图是一款非常专业的手机修图软件. 它的软件定位的目标用户就是摄影师,所以拿它来修出的照片,一下就高大上了许多. 软件 ...
- [推荐 10 个让你事半功倍的网站]
1 .一款在线电子相册制作神器:自带主题模板及背景音乐,各种分屏特效.视频编辑.录屏功能一应俱全, 让你分分钟就可以创造出精彩炫酷的照片视频! • https://www.apowersoft.cn/ ...
- 图解4种git合并分支方法
git中的分支非常的轻量,其实就是一个文件,里面记录了分支所指向的commit id,下图中有两个分支分别是master和test,他们都指向了A2这个提交,HEAD是一个特殊的指针,他永远指向你当前 ...
- 图解4种git合并分支方法 1
有时候我们会后悔,有时候我们会想回到过去,有时候我们想改变历史,然而在我们这个世界,目前来看是无法回到过去改变历史的 但在git的世界里,一切皆有可能,我们可以在多维空间里任意切换,随意改变一个宇宙的 ...
- md 阅读器_职场办公神器:文石BOOX Nova Pro 电子书阅读器测评
此文出自于知乎用户"比特a特"对BOOX Nova Pro的评测,本文已征得作者授权转载. 信息化时代,阅读需求早已不仅仅限于看书.我理解中的阅读需要满足以下需求: 沉浸的阅读体验 ...
- 实现财务自由 之 捡钱神器——打新债(申购新债/可转债打新),让你一天就能赚 20%(如何打新债,如何提高打新中签率)
实现财务自由 之 打新债(申购新债/可转债打新),让你一天就能赚 20%(如何打新债,如何提高打新中签率) 目录 实现财务自由 之 打新债(申购新债/可转债打新),让你一天就能赚 20%(如何打新债, ...
- 5款电子书阅读APP,看小说的必备神器
喜欢看小说的朋友总是会遇到找不到想看的电子书资源,其实有些好用的电子书阅读APP里面有很多好看的小说,今天都 分享给大家! 1.追书神器 作为全网小说资源更新最快的小说阅读器,相信很多人对这款APP都 ...
最新文章
- Unity 2021创建2D休闲点击器游戏视频教程
- ibatis查询结果返回数组_在ibatis中传递和返回自定义数组对象,在java中传递和返回oracle...
- C++程序员学Python:C与Python进行交互
- 所有的经历都是财富 --致我的2016
- echarts图表第一个案例
- 荒野行动服务器维护啥时好,荒野行动服务器真的极差
- java对象怎么创建_java对象是如何创建的
- (转)@Autowire注解与自动装配
- JDBC学习笔记(全)
- 小菜的系统框架界面设计-小菜用户权限管理软件开源大放送
- html给td内容加删除线,【原创】tr上加删除线-且满足一个页面多表格
- SPSS之配对样本的T检验
- 浙江计算机二级word试题,浙江省计算机二级高级办公软件word试题
- qq不能发说说显示服务器错误,qq为什么发送不成word服务器拒绝发送离线请求. - 卡饭网...
- 获取执行程序的原路径(绝对路径)
- [ACM]辽宁省赛2010 (HZNU 1081-1089)
- html邢台模板,邢台水泥预制件定制
- Python3D绘图后用自带展示器查看(可旋转)
- mac壁纸文件夹没有怎么办?mac动态壁纸怎么设置
- 【web前端期末大作业】基于html+css+javascript+jquery技术设计的音乐网站(44页)
热门文章
- 无穷小微积分符合新版高中数学课程标准的合法依据
- 开源搜索代理:SearX
- 【网页设计】资产负债表
- 机器学习 - 预测心脏病
- 【AHK】鼠标调整窗口大小/移动窗口位置/窗口置顶/透明度
- AGV初始篇--(5分钟了解AGV)
- java短信验证码功能发送的验证码如何校验_发送短信验证码和邮箱验证码—Java实现...
- 全球与中国亚麻籽行业消费量调研及未来产销需求分析报告2022-2028年
- 诺基亚n1装入Linux系统,实验一:linux系统安装与初用
- Linux wait()函数 http://blog.163.com/lqy_super/blog/static/1997510212012112953858902/