epub格式?sh)子书遵循IDPF推出的OCF规范QOCF规范遵@ZIP压羃技术,即epub?sh)子书本w就是一个ZIP文gQ我们将epub格式?sh)子书的后缀.epub修改?zip后,可以通过解压~YӞ例如winrar、winzipQ进行浏览或解压处理。一个未l加密处理的epub?sh)子书以三个部分l成Q其文gl构如下图所C:(x)
1、文Ӟ(x)mimetype
每一本epub?sh)子书均包含一个名为mimetype的文Ӟ且内容不变,用以说明epub的文件格式。文件内容如下:(x)
application/epub+zip//注释Q表C可以用epub工具和ZIP工具打开 |
2、目录:(x)META-INF
依据OCF规范QMETA-INF用于存放容器信息Q默认情况下Q即加密处理Q,该目录包含一个文Ӟ即container.xml,文g内容如下Q?/p>
<?xml version='1.0' encoding='utf-8'?> <container xmlns="urn:oasis:names:tc:opendocument:xmlns:container" version="1.0"> <rootfiles> <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml" /> </rootfiles> </container> |
container.xml的主要功能用于告诉阅dQ电(sh)子书的根文gQrootfileQ的路径Q红色部分)(j)和打开攑ּQ一般来Ԍ该container.xml文g也不需要作M修改Q除非你改变?sh)(jin)根文g的\径和文g名称?/p>
除container.xml文g之外QOCFq规定了(jin)以下几个文gQ?/p>
Q?Q[manifest.xml]Q文件列表(2Q[metadata.xml]Q元数据Q?Q[signatures.xml]Q数字签名(4Q[encryption.xml]Q加密(5Q[rights.xml]Q权限管理对于epub?sh)子书而言Q这些文仉是可选的?/p>
3、目录:(x)OEBPS
OEBPS目录用于存放OPS文档、OPF文档、CSS文档、NCX文档Q如果是制作中文?sh)子书,则还包括ttf文档Q即字体文档Q,OEBPS目录也可以徏立相应的子目录,例如建立chapter目录Q把各章节的OPS文档攑֜chapter目录之中。下图一本epub?sh)子书OEBPS文档的实例图Q?/p>
其中content.opf文g和toc.ncx文g为必需Q其它文件可Ҏ(gu)?sh)子书的具体情况而定?/p>
content.opf文g见博文OPF剖析
toc.ncx文g见博文toc.ncx剖析
来自Q?a >http://www.cnblogs.com/linlf03/archive/2011/12/13/2286029.html
一、什么是epub
epub是一个完全开攑֒免费的电(sh)子书标准。它可以“自动重新~排”的内宏V?/p>
Epub文g后缀名:(x).epub
二?epubl成
Epub内部使用XHTMLQ或者DTBookQ来展现文g的内容;用一pdcss来定义格式和版面设计Q?然后把所有的文g压羃成zip包?/p>
Epub格式中包含了(jin)DRM相关功能Q目前epub引擎暂时不考虑drm相关信息Q?/p>
EPub包括三项主要规格Q?nbsp;
开攑և版结构(Open Publication StructureQOPSQ?.0Q以定义内容的版面;
开攑Ҏ(gu)式(Open Packaging FormatQOPFQ?.0Q定义以XML为基?epub档案l构Q?nbsp; OEBPS容纳格式QOEBPS Container FormatQOCFQ?.0Q将所有相x(chng)件收集至ZIP压羃档案之中?/p>
1. OPSQ?/strong>
用XHTMLQ或者DTBookQ来构筑书的内容?/p>
用一pdcss来定义书的格式和版面设计?/p>
支持 png、jpeg、gif、svg的图片格式?/p>
2. OPFQ?/strong>
OPF 文g?EPUB 规范中最复杂的元数据。它用来定义ops一pd内容l合CL(fng)机制Qƈ为ebook提供?jin)一些额外的l构和内宏VOpf包含四个子元素:(x)metadata, manifest, spine, guide。在OEBPS中的opf包含两个XMLQ?.opf?ncx
Q一Q?opf
OPF包括以下内容Q?/p>
1QmetadataQepub的元数据Q如title、language、identifier、cover{。其中,title ?identifierq两个数据是必须的?/p>
按照EPUB规范Qidentifier由数字图书的创徏者定义,必须唯一。对于图书出版商来说Q这个字D一般包括ISBN或者Library of Congress~号Q也可以使用URL或者随机生成的唯一用户ID?strong>注意Q?/strong>unique-identifier 的值必d dc:identifier 元素?ID 属性匹配?/strong>
2QmanifestQ列Z(jin)package中所包含的所有文Ӟxhtml、css、png、ncx{)(j)。EPUB 鼓励使用 CSS 讑֮图书内容的样式,因此 manifest 中也包含 CSS。注意:(x)q入数字图书的所有文仉必须?/strong> manifest 中列出?/strong>
3QspineQ所有xhtml文档的线性阅读顺序。其中,spine的TOC属性必d含在manifest列出来的.ncx的id。可以将 OPF spine 理解为是书中 “面” 的顺序,解析的时候按照文档顺序从上到下依ơ读?spine?/p>
在spine中的每个 itemref 元素都需要有一?idref 属性,q个属性和 manifest 中的某个 ID 匚w?/p>
spine 中的 linear 属性表明该Ҏ(gu)作ؓ(f)U性阅读顺序中的一,q是和先后次序无兟뀂有些阅d可以spine中linear=no的项作ؓ(f)辅助选项处理Q有些阅d则选择忽略q个属性。例如在下边的实例中Q支持辅助选项处理的阅d?x)依ơ列出titlepage、chapter01、chapter05Qchapter02、chapter03、chapter04只在点击刎ͼ或者其他开启动作)(j)之后才会(x)昄?/p>
但是对于支持打印的阅dQ需要忽略linear=no的属性,保证能够最完全的展Cops中的内容?/p>
好的阅读器需要同时提供两U选择l用戗?/p>
Q二Q?ncx
NCX 定义?jin)数字图书的目录表。复杂的图书中,目录表通常采用层次l构Q包括嵌套的内容、章和节。包含了(jin)TOCQtablet of content,提供?jin)分D늚一些信息)(j)?/p>
NCX?<head> 标记中包含四?meta 元素Q?/p>
docTitle/text 的内Ҏ(gu)图书的标题,?OPF 中的 dc:title 匚w?/p>
navMap ?NCX 文g中最重要的部分,定义?jin)图书的目录。navMap 包含一个或多个 navPoint 元素Q每?navPoint 都要包含下列元素Q?/p>
Q三QNCX ?OPF spine 有什么不同?
两者很Ҏ(gu)hQ因Z个文仉描述?jin)文档的序和内宏V要说明两者的区别Q最单的办法是拿印刷书来打比方QOPF spine 描述?jin)书中的各个章节是如何实际连接v来的Q比方说过W一章的最后一就看到W二章的W一c(din)NCX 在图书的一开始描qC(jin)目录Q目录肯定会(x)包含书中主要的章节,但是q可能包含没有单独分늚节?/p>
一条法则是 NCX 包含?navPoint 元素通常?OPF spine 中的 itemref 元素多。实际上Qspine 中的所有项都会(x)出现?NCX 中,?NCX 可能更详l?/p>
3. OCFQ?/strong>
OCF定义?jin)文件是如何被打包成ZIP的,q且有两个额外的信息Q?/p>
1QASCII格式的mimetype文g。该文g必须包含application/epub+zip字符Ԍq且是ZIP压羃包的W一个文件。Mimetype要求是非压羃格式?/p>
2Q一个命名ؓ(f)META-INF的文件夹。这个文件夹中需要包含container.xml文g
4. Drm——需要在META-INF文g夹中包含rights.xml
ȝhQ一个epub?sh)子书的zip包含以下东西Q?/p>
1、mimetype 文gQ必L压羃包的W一个文件。注意,Mimetype必须是非压羃格式?/p>
2、meta-inf目录Q里面至包含一个container.xml 文g?/p>
3、OEBPS目录Q可以是别的名字Q但用这个名字)(j)Q包含了(jin)Q?/p>
a) image子目录(不一定LQ存放了(jin)所有的囄文g
b) content.opf 文g名可以是其它的,扩展名一定是opfQ就是一个xml格式的包内的文g列表
c) toc.ncx 目录文gQ一?#8220;逻辑目录”, 览控制文g.
d) 一些xhtml或html文g。就是书的内宏V?/p>
?EPUB 档案的目录和文gl构Q?strong>
mimetype
META-INF/
container.xml
OEBPS/
content.opf
title.html
content.html
stylesheet.css
toc.ncx
images/
cover.png
三、Epub?sh)子图书获取|站
FeedbooksQ?nbsp;http://www.feedbooks.com/books/top?range=month
掌上书苑Q?nbsp; http://www.cnepub.com/index
COAYQ?nbsp;http://www.coay.com
博酷|:(x) http://www.pockoo.com/books/?format=EPUB&orderby=lastedit
新浪ipad数码资源 http://myphoto.tech.sina.com.cn/forumdisplay.php?fid=398
EpubBooksQ?nbsp;http://www.epubbooks.com/books
四、Epub?sh)子图书阅读器(比较软gQ?/strong>
Adobe digital Edition: http://www.adobe.com/products/digitaleditions/
CalibreQ?开放源代码的电(sh)子书理工具Q支持windows、linux、osx{^台。也能在各种格式之间转换?a style="color: #1d58d1; text-decoration: none; ">http://calibre-ebook.com/
AldikoQandroid上的epub阅读器?nbsp;http://www.aldiko.com/
五?Epub?sh)子图书~辑软g
epubBuilderQepubbuilder是国做YӞ手工制作时还是很好用的,其是每个章节的制作和目录,比较方便Q还提供?jin)导入chmQtxtQhtml文g的功能,比较人性化
ecubQ?a style="color: #1d58d1; text-decoration: none; ">http://www.juliansmart.com/ecub
l Calibre
l Stanza
l Web2FB2
六、创Z个EPUB文g
参考资料:(x)http://www.ibm.com/developerworks/cn/xml/tutorials/x-epubtut/section3.html
1. 先徏一个空的zip文gQ可以取ZQ何名字,最好和你的书同名?/strong>
2、拷贝mimetype文g到包内,注意所谓拷贝,是q个文g不要用压~模式?/strong>
3、把其它的目录和文g用压~模式放入zip包?/strong>
4、改文g扩展名ؓ(f).epub
okQ一本epub?sh)子书就制成了(jin)?/strong>
七、完整的EPUB规范
OPF规范Q?a style="color: #1d58d1; text-decoration: none; ">http://www.idpf.org/2007/opf/OPF_2.0_final_spec.html
OPS规范Q?a style="color: #1d58d1; text-decoration: none; ">http://www.idpf.org/2007/ops/OPS_2.0_final_spec.html
OEBPS规范Q?a style="color: #1d58d1; text-decoration: none; ">http://www.idpf.org/ocf/ocf1.0/download/ocf10.htm
来自Q?a >http://www.cnblogs.com/linlf03/archive/2011/12/13/2286218.html