Epub格式電子書
epub電子書本身就是一個ZIP文件纺酸,我們將epub格式電子書的后綴.epub修改為.zip后,可以通過解壓縮軟件進行瀏覽或解壓處理址否。
解壓后的文件:
1.固有文件
1.1 mimetype
電子書閱讀器需要驗證 EPUB 文件是否真的是 EPUB 文件餐蔬。他們通過檢查 EPUB 存檔根目錄中的mimetype文件來驗證文件。該文件僅包含一行描述 EPUB 文件的 MIME 類型:application/epub+zip
1.2 META-INF
這個文件文件夾的名字翻譯成中文就是“元信息”佑附。文件夾里面只有一個container.xml文件樊诺。
這兩個文件是固定名字,固定位置帮匾。
2.文件解析
2.1 container.xml
先看一下container.xml中的內(nèi)容
這段內(nèi)容的作用就是標明了.opf文件的位置啄骇。這個.opf文件是一個很重要的文件痴鳄,它記錄了epub文件內(nèi)部各個文件的具體信息瘟斜。
Ps:.opf文件可以放到任意的位置,任意的命名痪寻,通過container.xml文件來找到.opf文件螺句。正是基于這個緣由,epub文件的標準里規(guī)定“EPUB 根目錄下必須包含 META-INF 目錄橡类,并且其中必需要有一個文件 container.xml”
2.2.opf文件解析
Open Package Format(OPF)蛇尚,即包文件格式,其主要功能是用于組織 OPS 文檔和提供相應的導航機制顾画,并形成一個開放式的基于 XML 的打包文檔取劫,該文檔的后綴名為 “.opf” 。
查看文件內(nèi)容:
metadata#
EPUB文件元數(shù)據(jù)
dc:identifier#
書本的唯一標識符研侣,需要和ncx文件中的identifier一致谱邪,雖然不一致也沒問題。
dc:language#
書本使用的語言 不是很重要庶诡。
dc:title#
整本書的書名惦银,重要性不言而喻。
meta#
通過對部分EPUB進行解壓末誓,目前只發(fā)現(xiàn)設置封面的meta
<meta content="cover-image" name="cover"/>
一般沒有需求不更改扯俱,如何設置封面查看下文。
manifest#
整本書的清單文件喇澡,一般會列出ncx文件和小說正文文件以及封面迅栅。
ncx文件是必須的,它定義了書籍的目錄晴玖,具體格式查看下文读存。
封面是可選的箩艺,不過EPUB沒有封面和插圖就沒有靈魂。
2.3 ncx文件解析
ncx是Navigation Content extended的縮寫宪萄,用于表示本書的目錄艺谆。
meta#
dtb:uid#
<meta content="urn:uuid:9bfb698f-dfa3-45ca-bea4-d0fbc2ead4f3" name="dtb:uid"/>
這個和opf中的dc:identifier應該保持一致,不一致倒也沒什么問題拜英。
depth静汤、totalPageCount和maxPageNumber#
對于電子書不需要進行修改,使用這幾個值就OK居凶。
docTitle#
姑且認為應該與opf中的dc:title一致虫给,書名以opf中的為準。
navPoint#
整書的目錄侠碧,每個navPoint代表目錄中的一項抹估,包含標題和文件路徑。
一個EPUB有以上這些文件就能被識別弄兜,通過創(chuàng)建文件然后壓縮就可以完成一個EPUB文件的創(chuàng)建药蜻。
3.epub閱讀器解析流程
解壓epub文件
解析container.xml獲取到opf文件信息
解析opf文件,獲取epub基本信息替饿,文件信息
解析ncx文件语泽,獲取目錄章節(jié)列表
通過獲取的章節(jié)列表信息加載解析對應的xhtml文件
頁面展示