做者:Samphp
最近我在慕课网发布了两门关于Web阅读应用开发的课程,采用Vue全家桶开发。免费课是入门级课程,初步实现了一个阅读器。实战课是进阶课程,实现了一个高性能的互联网阅读应用。两个项目都采用自适应布局,同时支持PC端和移动端,想要系统提高前端技能的同窗不要错过。css
免费课《快速入门Web阅读器开发》当即学习html
免费课DEMO当即体验前端
实战课《Vue2.5 实战微信读书 媲美原生App的企业级web书城》当即学习web
实战课DEMO当即体验spring
本教程为系列教程,主要目的是向你们分享如何开发一个功能强大的Web阅读器,技术栈是Vue全家桶。缓存
在上一篇手记中,我介绍了阅读应用的常见功能与阅读器的实现原理,没有读过的同窗能够点击这里。在开发阅读器以前,咱们先要了解常见的电子书格式,如:txt、PDF、ePub和mobi等,下面简单介绍这些格式:微信
本教程主要讲解ePub阅读器的开发。app
上一篇手记为你们粗略展现了阅读器的开发流程,接下来的系列教程我将由浅入深,为你们详细介绍如何开发一个阅读器。编辑器
正式开发以前,咱们须要了解什么是ePub标准。ePub是Electronic Publication(电子出版物)的缩写,它是IDPF制定的电子出版物标准。
资料来源:idpf.org/about-us
ePub标准目前已经推出3.0版本,它包含如下几个部分:
想要深刻研究ePub标准的同窗点击这里,官方为咱们提供了很是详细的文档。
下面咱们来看看一本ePub电子书的内部结构,测试电子书点击这里下载。
将电子书的后缀名改成zip,以后用解压软件进行解压,能够获得一个文件夹,以下图所示:
打开电子书目录,在META-INF目录下有一个container.xml文件,这是电子书的容器文件(Container),阅读器解析ePub电子书就是从这个文件开始的。
但愿深刻研究Container标准的同窗能够点击这里,咱们打开测试电子书的container.xml,内容以下:
<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/>
</rootfiles>
</container>
复制代码
经过rootfile的full-path属性咱们能够了解到在OEBPS目录下存在一个content.opf文件,咱们打开OEBPS目录找到这个文件
<?xml version="1.0"?>
<package xmlns="http://www.idpf.org/2007/opf" unique-identifier="bookid" version="2.0">
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
<dc:title>Agile Processes in Software Engineering and Extreme Programming</dc:title>
<dc:creator>Juan Garbajosa, Xiaofeng Wang and Ademar Aguiar</dc:creator>
<dc:language>En</dc:language>
<dc:rights></dc:rights>
<dc:publisher>Springer International Publishing, Cham</dc:publisher>
<dc:identifier id="bookid">978-3-319-91602-6</dc:identifier>
<meta name="cover" content="A978-3-319-91602-6_CoverFigure_IMG"/>
<meta name="epub-converter-version" content="v3.47"/>
</metadata>
<manifest>
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
<item id="css1" href="springer_epub.css" media-type="text/css"/>
<item id="A468350_1_En_1_ChapterPart1" href="A468350_1_En_1_ChapterPart1.html" media-type="application/xhtml+xml"/>
<item id="A468350_1_En_1_Chapter" href="A468350_1_En_1_Chapter.html" media-type="application/xhtml+xml"/>
<item id="A468350_1_En_5_Fig1_HTML_IMG" href="A468350_1_En_5_Fig1_HTML.gif" media-type="image/gif"/>
...
</manifest>
<spine toc="ncx">
<itemref idref="ACoverHTML"/>
<itemref idref="A468350_1_En_BookFrontmatter_OnlinePDF"/>
<itemref idref="A468350_1_En_1_ChapterPart1"/>
<itemref idref="A468350_1_En_1_Chapter"/>
<itemref idref="A468350_1_En_2_Chapter"/>
<itemref idref="A468350_1_En_3_ChapterPart2"/>
...
</spine>
<guide>
<reference type="cover" title="Cover" href="ACoverHTML.html"/>
<reference type="toc" title="Table of Contents" href="A468350_1_En_BookFrontmatter_OnlinePDF.html#Toc"/>
<reference type="text" title="Cosmic User Story Standard" href="A468350_1_En_1_Chapter.html"/>
</guide>
</package>
复制代码
ePub标准规定一个opf文件根标签为package,其中必须包含metadata、manifest和spine,guide、bindings和collection属于可选项
metadata遵循DCMES(Dublin Core Metadata Element Set:都柏林核心元素)的规定,DCMES的目的是为了规范电子信息的描述,详细了解DCMES能够点击这里。ePub规定metadata下必须至少包含如下三个元素:
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
<dc:title>Agile Processes in Software Engineering and Extreme Programming</dc:title>
<dc:language>En</dc:language>
<dc:identifier id="bookid">978-3-319-91602-6</dc:identifier>
</metadata>
复制代码
manifest存储了电子书资源文件的详尽列表
<manifest>
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
<item id="ACoverHTML" href="ACoverHTML.html" media-type="application/xhtml+xml"/>
</manifest>
复制代码
提供电子书阅读的顺序
<spine toc="ncx">
<itemref idref="ACoverHTML"/>
<itemref idref="A468350_1_En_BookFrontmatter_OnlinePDF"/>
</spine>
复制代码
ePub标准的核心是利用zip技术,将不一样类型的文件打包为一个ePub文件,利用xml技术进行配置管理,结合ePub标准的规定将各种资源文件(如html、css、图片、音频和视频)有序地组织起来,从而保证了各种阅读器解析时的一致性。
本文向你们介绍了电子书的常见格式,并详细讲解了ePub标准。理解ePub标准是开发电子书阅读器的一个前提,你们能够动手尝试将本文提供测试电子书解压,而后进行分析,也能够经过互联网经过其余ePub电子书尝试解析,看看它们是否符合ePub标准。