一、什么是epub
epub是一個(gè)完全開放和免費(fèi)的電子書標(biāo)準(zhǔn)。它可以“自動重新編排”的內(nèi)容。
Epub文件后綴名:.epub
二、 epub組成
Epub內(nèi)部使用XHTML(或者DTBook)來展現(xiàn)文件的內(nèi)容;用一系列css來定義格式和版面設(shè)計(jì); 然后把所有的文件壓縮成zip包。
Epub格式中包含了DRM相關(guān)功能(目前epub引擎暫時(shí)不考慮drm相關(guān)信息)
EPub包括三項(xiàng)主要規(guī)格:
開放出版結(jié)構(gòu)(Open Publication Structure,OPS)2.0,以定義內(nèi)容的版面;
開放包裹格式(Open Packaging Format,OPF)2.0,定義以XML為基礎(chǔ)的.epub檔案結(jié)構(gòu); OEBPS容納格式(OEBPS Container Format,OCF)1.0,將所有相關(guān)文件收集至ZIP壓縮檔案之中。
1. OPS:
用XHTML(或者DTBook)來構(gòu)筑書的內(nèi)容。
用一系列css來定義書的格式和版面設(shè)計(jì)。
支持 png、jpeg、gif、svg的圖片格式。

2. OPF:
OPF 文件是 EPUB 規(guī)范中最復(fù)雜的元數(shù)據(jù)。它用來定義ops一系列內(nèi)容組合到一起的機(jī)制,并為ebook提供了一些額外的結(jié)構(gòu)和內(nèi)容。Opf包含四個(gè)子元素:metadata, manifest, spine, guide。在OEBPS中的opf包含兩個(gè)XML: .opf和.ncx

(一).opf
OPF包括以下內(nèi)容:
1)metadata:epub的元數(shù)據(jù),如title、language、identifier、cover等。其中,title 和 identifier這兩個(gè)數(shù)據(jù)是必須的。
按照EPUB規(guī)范,identifier由數(shù)字圖書的創(chuàng)建者定義,必須唯一。對于圖書出版商來說,這個(gè)字段一般包括ISBN或者Library of Congress編號;也可以使用URL或者隨機(jī)生成的唯一用戶ID。注意:unique-identifier 的值必須和 dc:identifier 元素的 ID 屬性匹配。

2)manifest:列出了package中所包含的所有文件(xhtml、css、png、ncx等)。EPUB 鼓勵(lì)使用 CSS 設(shè)定圖書內(nèi)容的樣式,因此 manifest 中也包含 CSS。注意:進(jìn)入數(shù)字圖書的所有文件都必須在 manifest 中列出。

3)spine:所有xhtml文檔的線性閱讀順序。其中,spine的TOC屬性必須包含在manifest列出來的.ncx的id。可以將 OPF spine 理解為是書中 “頁面” 的順序,解析的時(shí)候按照文檔順序從上到下依次讀取 spine。
在spine中的每個(gè) itemref 元素都需要有一個(gè) idref 屬性,這個(gè)屬性和 manifest 中的某個(gè) ID 匹配。
spine 中的 linear 屬性表明該項(xiàng)是作為線性閱讀順序中的一項(xiàng),還是和先后次序無關(guān)。有些閱讀器可以將spine中l(wèi)inear=no的項(xiàng)作為輔助選項(xiàng)處理,有些閱讀器則選擇忽略這個(gè)屬性。例如在下邊的實(shí)例中,支持輔助選項(xiàng)處理的閱讀器會依次列出titlepage、chapter01、chapter05,chapter02、chapter03、chapter04只在點(diǎn)擊到(或者其他開啟動作)之后才會顯示。
但是對于支持打印的閱讀器,需要忽略linear=no的屬性,保證能夠最完全的展示ops中的內(nèi)容。
好的閱讀器需要同時(shí)提供兩種選擇給用戶。

(二).ncx
NCX 定義了數(shù)字圖書的目錄表。復(fù)雜的圖書中,目錄表通常采用層次結(jié)構(gòu),包括嵌套的內(nèi)容、章和節(jié)。包含了TOC(tablet of content,提供了分段的一些信息)。
NCX的 <head> 標(biāo)記中包含四個(gè) meta 元素:
- uid: 數(shù)字圖書的惟一 ID。該元素應(yīng)該和 OPF 文件中的 dc:identifier 對應(yīng)。
- depth:反映目錄表中層次的深度。
- totalPageCount 和 maxPageNumber:僅用于紙質(zhì)圖書,保留 0 即可。
docTitle/text 的內(nèi)容是圖書的標(biāo)題,和 OPF 中的 dc:title 匹配。
navMap 是 NCX 文件中最重要的部分,定義了圖書的目錄。navMap 包含一個(gè)或多個(gè) navPoint 元素,每個(gè) navPoint 都要包含下列元素:
- playOrder:說明文檔的閱讀順序。和 OPF spine 中 itemref 元素的順序相同。
- navLabel/text :給出該章節(jié)的標(biāo)題。通常是章的標(biāo)題或者數(shù)字。
- content :它的 src 屬性指向包含這些內(nèi)容的物理資源。就是 OPF manifest 中聲明的文件。
- 還可以有一個(gè)或多個(gè) navPoint 元素。NCX 使用嵌套的導(dǎo)航點(diǎn)表示層次結(jié)構(gòu)的文檔

(三)NCX 和 OPF spine 有什么不同?
兩者很容易混淆,因?yàn)閮蓚€(gè)文件都描述了文檔的順序和內(nèi)容。要說明兩者的區(qū)別,最簡單的辦法就是拿印刷書來打比方:OPF spine 描述了書中的各個(gè)章節(jié)是如何實(shí)際連接起來的,比方說翻過第一章的最后一頁就看到第二章的第一頁。NCX 在圖書的一開始描述了目錄,目錄肯定會包含書中主要的章節(jié),但是還可能包含沒有單獨(dú)分頁的小節(jié)。
一條法則是 NCX 包含的 navPoint 元素通常比 OPF spine 中的 itemref 元素多。實(shí)際上,spine 中的所有項(xiàng)都會出現(xiàn)在 NCX 中,但 NCX 可能更詳細(xì)。
3. OCF:
OCF定義了文件是如何被打包成ZIP的,并且有兩個(gè)額外的信息:
1)ASCII格式的mimetype文件。該文件必須包含application/epub+zip字符串,并且是ZIP壓縮包的第一個(gè)文件。Mimetype要求是非壓縮格式。
2)一個(gè)命名為META-INF的文件夾。這個(gè)文件夾中需要包含container.xml文件
4. Drm——需要在META-INF文件夾中包含rights.xml
總結(jié)起來,一個(gè)epub電子書的zip包含以下東西:
1、mimetype 文件,必須是壓縮包的第一個(gè)文件。注意,Mimetype必須是非壓縮格式。
2、meta-inf目錄,里面至少包含一個(gè)container.xml 文件。
3、OEBPS目錄(可以是別的名字,但建議用這個(gè)名字),包含了:
a) image子目錄(不一定總有)存放了所有的圖片文件
b) content.opf 文件名可以是其它的,擴(kuò)展名一定是opf,就是一個(gè)xml格式的包內(nèi)的文件列表
c) toc.ncx 目錄文件,一個(gè)“邏輯目錄”, 瀏覽控制文件.
d) 一些xhtml或html文件。就是書的內(nèi)容。
簡單 EPUB 檔案的目錄和文件結(jié)構(gòu):
mimetype
META-INF/
container.xml
OEBPS/
content.opf
title.html
content.html
stylesheet.css
toc.ncx
images/
cover.png

三、Epub電子圖書獲取網(wǎng)站
Feedbooks: http://www.feedbooks.com/books/top?range=month
掌上書苑: http://www.cnepub.com/index
COAY: http://www.coay.com
博酷網(wǎng): http://www.pockoo.com/books/?format=EPUB&orderby=lastedit
新浪ipad數(shù)碼資源 http://myphoto.tech.sina.com.cn/forumdisplay.php?fid=398
EpubBooks: http://www.epubbooks.com/books
四、Epub電子圖書閱讀器(比較軟件)
Adobe digital Edition: http://www.adobe.com/products/digitaleditions/
Calibre: 開放源代碼的電子書管理工具,支持windows、linux、osx等平臺。也能在各種格式之間轉(zhuǎn)換。http://calibre-ebook.com/
Aldiko:android上的epub閱讀器。 http://www.aldiko.com/
五、 Epub電子圖書編輯軟件
epubBuilder:epubbuilder是國人自做軟件,手工制作時(shí)還是很好用的,尤其是每個(gè)章節(jié)的制作和目錄,比較方便,還提供了導(dǎo)入chm,txt,html文件的功能,比較人性化
ecub:http://www.juliansmart.com/ecub
l Calibre
l Adobe InDesign
l Stanza
l OpenBerg Rector
l ePUB check tool
l Convert uploads to ePUB
l Web2FB2
l Python converter
l DAISY Pipeline
六、創(chuàng)建一個(gè)EPUB文件
參考資料:http://www.ibm.com/developerworks/cn/xml/tutorials/x-epubtut/section3.html
1. 先建一個(gè)空的zip文件,可以取為任何名字,最好和你的書同名。
2、拷貝mimetype文件到包內(nèi),注意所謂拷貝,就是這個(gè)文件不要用壓縮模式。
3、把其它的目錄和文件用壓縮模式放入zip包。
4、改文件擴(kuò)展名為.epub
ok!一本epub電子書就制成了。
七、完整的EPUB規(guī)范
OPF規(guī)范:http://www.idpf.org/2007/opf/OPF_2.0_final_spec.html
OPS規(guī)范:http://www.idpf.org/2007/ops/OPS_2.0_final_spec.html
OEBPS規(guī)范:http://www.idpf.org/ocf/ocf1.0/download/ocf10.htm
來自:http://www.cnblogs.com/linlf03/archive/2011/12/13/2286218.html