Pages

Friday, 18 January 2013

用Calibre在计算机上阅读 ePub 电子书

ePub 是一种相当受欢迎的开放式电子书格式,现在一般的 iPhone, iPad, Android 或一些坊间的电子书阅读器..等设备都可以透过 App 或直接阅读 ePub 电子书的内容。
不过如果你下载到 ePub 格式的文件档后,希望能在计算机中开来阅读的话,该怎么做呢?
以下介绍一个相当多人爱用的免费、开放原始码软件 Calibre,目前分别针对 Windows, Mac OS X, Linux…等操作系统提供不同版本,并支持包括繁体中文在内的多国语言接口。尽管 Calibre 的操作接口看起来好像按钮很多、乱乱的,不过实际上那些都只是书籍的分类管理功能而已,当你储存在计算机中的电子书数量越来越多之后,就越能体会其方便性。
在 Calibre 上阅读 ePub 电子书其实也很简单,就是把 .epub 档拉到 Calibre 窗口中,双击开启阅读窗口后便可开始读书啰。一些常用的功能譬如说字体放大/缩小、全屏幕模式、目录切换、键盘左右键翻页、书签管理、荧光笔画重点…等功能通通都有,使用起来也相当舒适、轻松,另外还提供 ePub, PDF, TXT, MOBI, AZW3…等格式的转换功能,是个相当不错的 ePub 电子书阅读器。
▇ 软件小档案 ▇
  • 软件名称:Calibre
  • 软件版本:0.9.14
  • 软件语言:繁体中文、英文….等多国语言
  • 软件性质:免费软件
  • 档案大小:56.7MB
  • 系统支持:Windows XP/Vista/Win7/Win8、Mac OS X、Linux
  • 官方网站:http://calibre-ebook.com/
  • 软件下载: 按这里,https://download.calibre-ebook.com/6.15.1/calibre-portable-installer-6.15.1.exe
下载免费ePub、PDF电子书: 按这里

一、如何在 Calibre 阅读 ePub 电子书

第1步将 Calibre 软件安装好、开启之后,单击左上角的「加入书籍」按钮,选取你要阅读的电子书 ePub 档。或者直接从桌面或文件夹中把 .epub 档案拉到 Calibre 窗口中亦可。


第2步接着在 Calibre 窗口中双击书籍名称,即可在另外一个阅读窗口中开启你指定的电子书。


第3步然后就可以轻松阅读 ePub 电子书中的内容啰!此时可按键盘的左 ←、右 → 键翻页,点「A」图标放大或缩小字体…。


第4步单击目录图标即可检视书籍目录,并直接切换到你想阅读的章节。



二、将电子书转换成 ePub, PDF, TXT, MOBI, AZW3..等格式

第1步如果你想将未受限制的 ePub、PDF..等格式的电子书转成其他文件格式,可以在汇入 Calibre 软件并选取后单击「转换书籍」按钮。


第2步在右上角选单中选择你要输出的文件格式后,单击右下角的「确定」按钮,即可开始转档。另外还有一些书名、作者等信息、外观、目录与页面设定..等项目可自行修改。


第3步完成后,在 Calibre 窗口中选取该本电子书时,右边缩图下方会标示目前已有哪些格式的文件档可阅读,点一下「单击来开启」,即可开启文件夹、浏览刚刚转档完成的档案。
-------------

通过calibre将html转成epub、mobi、PDF等 

目录
通过calibre,将markdown和html转成epub、mobi、pdf等格式文档。
说明(于2018-06-02):calibre将HTML转成mobi等格式时请注意配置好各项配置参数到合理值,同时注意自己的HTML的样式调整,特别是在mobi格式的时候,html的CSS样式,如background:#dddddd设置背景色,颜色不生效,需要用background-color:#dddddd才会生效。 目前经过多次测试,生成文档效果不佳的问题,主要是配置参数如字体大小和CSS样式问题造成的。同时,为了方便在epub等阅读器上的阅读体验,可以将body标签的CSS背景色设置为透明。

缘由

事情是这样的:我们公司 掘金量化(跟掘金javascriptjava的关系) 让我开发公司官网,官网的帮助中心文档,需要生成pdf离线文档以方便用户阅读和使用,但是使用wkhtmltopdf生成PDF文档,效果不是很理想。
看着gitbook和看云生成的PDF文档,非常完美,然后把从两个站点下载的PDF文档的后缀改成了.xml格式,文本编辑器打开一看,用的居然是calibre,然后当时捣鼓了半个月,终于把问题解决。
感觉很多企业和个人可能也会有同样的需求,所以干脆将calibre的使用封装一下,开源出来,以方便更多的人。
当前文档,会告诉你使用方式和生成原理,以便你也可以根据自己掌握的编程语言封装一个工具类

安装calibre

  • 下载地址:https://calibre-ebook.com/download
  • 根据自己的系统安装对应的calibre(需要注意的是,calibre要安装3.x版本的,2.x版本的功能不是很强大。反正安装最新的就好。)
  • 安装完calibre之后,将calibre加入到系统环境变量中,执行下面的命令之后显示3.x的版本即表示安装成功。
ebook-convert --version

文档导出效果

案例使用的是无闻的《Gogs中文文档》,文档地址:https://www.bookstack.cn/books/gogs_zh ,可以访问该地址查看文档导出的实际效果。
截图: 文档导出效果

快速体验

如果成功安装了calibre,并配置了环境变量,则可以按照下面的方式进行快速体验。(bin目录下是各系统64位的二进制可执行程序,限64位系统)
  • Windows用户,进入bin/win目录,执行命令:
./converter.exe ../../example/gogs_zh/config.json
  • Mac用户,进入bin/mac目录,执行命令:
./converter ../../example/gogs_zh/config.json
  • Linux用户,进入bin/linux目录,执行命令:
./converter ../../example/gogs_zh/config.json
执行成功之后,在example/gogs_zh/output下可以看到导出的文档

使用案例

配置文件

以json作为配置文件,配置文件的文件名不限制,在使用的时候指定一下配置文件的文件名即可。 需要注意的是,json配置文件需要放在项目的根目录下。比如示例项目,example/gogz_zh中,配置文件config.json就是放在项目的根目录

json配置示例

{
 "charset": "utf-8",
 "cover": "",
 "date": "2018-01-21",
 "description": "Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。",
 "footer": "
本文档使用 书栈(BookStack.CN) 构建 - _PAGENUM_ -
"
, "header": "
_SECTION_
"
, "identifier": "", "language": "zh-CN", "creator": "书栈(BookStack.CN)", "publisher": "书栈(BookStack.CN)", "contributor": "书栈(BookStack.CN)", "title": "Gogs中文文档", "format": ["epub", "mobi", "pdf"], "font_size": "14", "paper_size": "a4", "margin_left": "72", "margin_right": "72", "margin_top": "72", "margin_bottom": "72", "more": [], "toc": [{ "id": 709800000, "link": "statement.html", "pid": 0, "title": "致谢" }, { "id": 539, "link": "539.html", "pid": 538, "title": "5.1 配置文件手册" }, { "id": 545, "link": "545.html", "pid": 543, "title": "4.1 自定义模板" }, { "id": 549, "link": "549.html", "pid": 548, "title": "2.1 注册 Windows 服务" }, { "id": 554, "link": "554.html", "pid": 0, "title": "1. 简介" }, { "id": 555, "link": "555.html", "pid": 554, "title": "1.1 变更日志" }, { "id": 540, "link": "540.html", "pid": 538, "title": "5.2 公告与高阶指南" }, { "id": 547, "link": "547.html", "pid": 543, "title": "4.2 Web 钩子" }, { "id": 548, "link": "548.html", "pid": 0, "title": "2. 下载安装" }, { "id": 556, "link": "556.html", "pid": 554, "title": "1.2 常见问题" }, { "id": 559, "link": "559.html", "pid": 558, "title": "3.1 二进制升级" }, { "id": 546, "link": "546.html", "pid": 543, "title": "4.3 多国语言支持" }, { "id": 550, "link": "550.html", "pid": 548, "title": "2.2 配置与运行" }, { "id": 557, "link": "557.html", "pid": 554, "title": "1.3 故障排查" }, { "id": 558, "link": "558.html", "pid": 0, "title": "3. 版本升级" }, { "id": 560, "link": "560.html", "pid": 558, "title": "3.2 源码升级" }, { "id": 543, "link": "543.html", "pid": 0, "title": "4. 功能介绍" }, { "id": 544, "link": "544.html", "pid": 543, "title": "4.4 授权认证" }, { "id": 551, "link": "551.html", "pid": 548, "title": "2.3 二进制安装" }, { "id": 538, "link": "538.html", "pid": 0, "title": "5. 高级用法" }, { "id": 552, "link": "552.html", "pid": 548, "title": "2.4 包管理安装" }, { "id": 542, "link": "542.html", "pid": 0, "title": "6. 捐赠我们" }, { "id": 553, "link": "553.html", "pid": 548, "title": "2.5 源码安装" }] }

json配置项说明

  • charset 指定字符集,留空则默认为utf-8编码。选填。
  • cover 封面图片,一张800x1068像素或该尺寸比例的图片,jpg、png或gif格式。如果没有封面,请置空。选填。
  • date 文档生成日期,年月日时分秒都可以。默认当前日期时间。选填。
  • title 文档标题。必填。
  • description 文档描述、摘要。选填。
  • footerheader 生成PDF文档时,文档的底部(footer)和顶部(header)内容,仅对PDF文档有效。选填。
  • identifier 出版物的标识。留空即可。
  • language 语言。必填。可选值:zh、en、zh-CN、en-US等。
  • creatorpublishercontributor 如果你懒的话,三个都传同一个值,比如示例中的"书栈(BookStack.CN)"。如果真要区分的话,creator就是文档作者,比如"进击的皇虫",publishercontributor理解为出版单位和构建人。三个配置项,建议填写。
  • format 导出的文档格式,不传值则默认导出PDF。可选值:epub、pdf、mobi。
  • font_size 数字,默认字体大小,仅对导出PDF有效。选填。
  • paper_size 导出文档的页面大小,不区分大小写。默认"A4",选填。可选值: a0a1a2a3a4a5a6b0b1b2b3b4,b5b6legalletter
  • margin_leftmargin_rightmargin_topmargin_bottom 数字,左边距、右边距、上边距、下边距,仅对PDF文档有效。选填,默认72,即表示72pt。
  • more 更多选项。仅对PDF有效。不建议使用。
  • toc 重要!!!这个是重中之重,用于生成文档目录的。idpid是数字,pid表示上级的id。id的值不能重复。link表示html链接文件。toc里面的title表示目录章节标题。
(参照示例的config.json去配置就好。)

使用教程

bin目录下的是当前程序生成的64位的二进制可执行文件。Windows下使用示例:
converter.exe path/to/config.json
执行成功之后,会自动在项目目录下创建个output文件夹,并将文件导出到里面。比如导出pdf格式,则会在output文件夹下面出现book.pdf文件。

Go语言使用

引入当前包: github.com/TruthHun/converter/converter
if Convert, err:= converter.NewConverter("path/to/config.json");err==nil{
    Convert.Convert()
}

其它语言

由于目前没封装PHP、Python等的类和包,所以其它语言要使用的话,就是在项目下生成一个config.json(名字随便自己定义),然后调用各自语言的cmd执行:
/path/to/converter /path/to/config.json

原理

HTML导出PDF、epub等文档的原理很简单:根据config.json中的内容,生成epub电子书的基本结构,然后将当前目录下的文件压缩并重命名如content.epub,然后再使用ebook-convert进行转换,转换命令:
ebook-convert content.epub output/book.pdf [options]
这样,你就可以使用自己熟悉的语言封装一个包,并调用calibre导出文档了。

注意事项

  • HTML中不要有使用js代码渲染文档内容,因为js是不会被执行的

精神上支持我

虽然我很缺钱... 但是得到他人的肯定和认可比什么都重要。 如果当前项目帮到了你,请给项目一个star,以鼓励我在开源的路上能走的更好、更远。 附自己业余时间搞的一些站点,支持我,可以点击访问一下:

markdown文档如何转成pdf、epub、mobi

说实话,这个我没仔细去研究过。思路就是将markdown文档转成HTML(毕竟这样比较好控制显示样式),然后再通过当前工具再转成PDF文档等。网上应该有更好的方法,如果大家找到了,麻烦也分享一下。

frm https://github.com/TruthHun/converter
-------------------------------------

The official source code repository for the calibre ebook manager 

calibre

calibre is an e-book manager. It can view, convert, edit and catalog e-books in all of the major e-book formats. It can also talk to e-book reader devices. It can go out to the internet and fetch metadata for your books. It can download newspapers and convert them into e-books for convenient reading. It is cross platform, running on Linux, Windows and macOS.
For more information, see the calibre About page
Build Status

Screenshots

Usage

See the User Manual

Development

tarball of the source code for the current calibre release.

Bugs

Bug reports and feature requests should be made in the calibre bug tracker at launchpad. GitHub is only used for code hosting and pull requests.

Support calibre

calibre is a result of the efforts of many volunteers from all over the world. If you find it useful, please consider contributing to support its development. Donate to support calibre development.

Building calibre binaries

See Build instructions for instructions on how to build the calibre binaries and installers for all the platforms calibre supports.

 
-----

安装 calibre

安装后还要执行命令
ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/local/bin/ebook-convert
------------
Calibre是一款电子图书管理软件,其提供的“一站式”的电子书解决方案,可以全面满足对电子书需求,甚至可以利用它组织成属于自己的电子图书馆,它的功能更是多种多样,不仅可以用它对图书进行格式转换,归类整理电子书,还可以将文本图像材料、在线内容(RSS)加入并转换为电子书。更重要的是Calibre是免费的、开源的,拥有跨平台的设计,可在Linux, OS X和Windows操作系统中运行,堪称电子书管理神器! 
---------------------------
电子书管理软件-Calibre

Calibre是一个自由开源的电子书软件套装,以GNU GPL第三版发布。可用来组织、存放、以及管理电子书,支持大多数的电子书格式。这些电子书格式多数都可以被编辑,如更改字体或字体大小等,并可以加入自动生成的目录。用户可以导入电子书至calibre的电子书库,不论是手动加入或是与阅读器同步皆可。也可将在线内容加入并转换为电子书。之后可经由USB或是邮件服务器导出到所有支持的阅读器。也可以直接邮寄电子书,例如发送私人文件到Kindle电子书阅读器。calibre也支持转换外部内容,如RSS、聚合器协议等;同时也支持网页服务器(HTTP)。

Calibre最近发布了v2.0版。新版最主要特性是电子书编辑器支持编辑 EPUB和AZW3格式的电子书。新版不再支持Windows XP 和低于OS X 10.7的版本,使用旧操作系统的用户可继续使用Calibre 1.48。Calibre 2.0的其它特性还有电子书对比工具,利用该工具用户可以看到两本书之间的差异;OS X版本支持Android手机和平板;电子书浏览器支持Windows 8平板。

官网: www.calibre-ebook.com
---------------------------------------
https://zh.wikihow.com/%E6%89%93%E5%BC%80EPUB%E6%96%87%E4%BB%B6
---------------------------------------
https://zhuanlan.zhihu.com/p/83146937
----------------
Calibre的排版不如neat-reader好,neat-reader更方便阅读电子书,参见:
https://briteming.blogspot.com/2017/12/epub-neat-reader.html