最近在写的一个项目涉及到epub格式电子书的制作,借这个机会总结一下epub这个电子图书标准,并利用Python语言生成一本简单的epub格式电子书。
我曾说过,电子书的阅读越来越流行是未来阅读发展的不可避免的趋势。纸质书籍是否会在历史长河中消失我们无从知晓,但可以确定的是,数字化阅读在未来至少十年中,会润物细无声般成为更多人的一种生活方式。
或许很多人都没有察觉到,我们这一代经历的正是一场关于人类获取信息,生产内容方式的巨变。从因特网诞生,电子邮件、超链接、富文本的广泛使用,再到现在所谓的"互联网2.0",人们从“下载者”转变为“上传者”,这场转变的发展也不过是数十年而已,说到这,想起一张著名的图片:
这张光盘能装下的信息比下面所有纸能记录下的都多
--比尔盖茨,1994
EPUBenablescontenttobecreatedbyanauthororpublisheronce,viadifferenttoolsandservices,distributedthroughmanychannels,andviewed,onlineoroffline,usingmanydifferentdevicesandapplications.TheEPUBspecificationsformakindof“contract”betweencontentcreatorsandreadingsystemstoenablethisinteroperability.
上面提到,EPub格式的电子书其实是一个压缩包文件,里面有几个按照规范定义的文件,所谓标准,就是规范EPub文件中某些文件的格式、内容和位置等等。因此,如果我们想要自己制作一本EPub格式的电子书,首先要了解要制作的内容压缩为zip文件前的文件结构是什么,一个典型的EPub的文件结构是这样的:
其实结构可以更简单,下面给出我用Python语言构建的EPub文件的文件结构:
对比一下可以看出来有些文件并不是必须的,下面简单介绍一下EPub文件的目录结构:
这个内容是固定的,就一行application/epub+zip
表明可以被EPub工具打开或zip工具打开
根据OCF(OpenContainerFormat)标准,该文件夹包含一个文件container.xml,内容如下:
OEBPS目录用于存放OPS文档、OPF文档、CSS文档、NCX文档,OEBPS这个名字是可变的,可以根据containter.xml进行配置。这里是OPS文件夹。