狼愛上貍

          我胡漢三又回來了

          Epub基礎知識介紹

          一、什么是epub

          epub是一個完全開放和免費的電子書標準。它可以“自動重新編排”的內容。

          Epub文件后綴名:.epub

           

          二、 epub組成

          Epub內部使用XHTML(或者DTBook)來展現文件的內容;用一系列css來定義格式和版面設計; 然后把所有的文件壓縮成zip包。

          Epub格式中包含了DRM相關功能(目前epub引擎暫時不考慮drm相關信息)

           

          EPub包括三項主要規格:  

          開放出版結構(Open Publication Structure,OPS)2.0,以定義內容的版面;  

          開放包裹格式(Open Packaging Format,OPF)2.0,定義以XML為基礎的.epub檔案結構;   OEBPS容納格式(OEBPS Container Format,OCF)1.0,將所有相關文件收集至ZIP壓縮檔案之中。

          1. OPS

          用XHTML(或者DTBook)來構筑書的內容。

          用一系列css來定義書的格式和版面設計。

          支持 png、jpeg、gif、svg的圖片格式。

          2. OPF

          OPF 文件是 EPUB 規范中最復雜的元數據。它用來定義ops一系列內容組合到一起的機制,并為ebook提供了一些額外的結構和內容。Opf包含四個子元素:metadata, manifest, spine, guide。在OEBPS中的opf包含兩個XML: .opf和.ncx

           

          (一).opf

          OPF包括以下內容:

          1)metadata:epub的元數據,如title、language、identifier、cover等。其中,title 和 identifier這兩個數據是必須的。

          按照EPUB規范,identifier由數字圖書的創建者定義,必須唯一。對于圖書出版商來說,這個字段一般包括ISBN或者Library of Congress編號;也可以使用URL或者隨機生成的唯一用戶ID。注意:unique-identifier 的值必須和 dc:identifier 元素的 ID 屬性匹配。

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

          3)spine:所有xhtml文檔的線性閱讀順序。其中,spine的TOC屬性必須包含在manifest列出來的.ncx的id。可以將 OPF spine 理解為是書中 “頁面” 的順序,解析的時候按照文檔順序從上到下依次讀取 spine。

          在spine中的每個 itemref 元素都需要有一個 idref 屬性,這個屬性和 manifest 中的某個 ID 匹配。

          spine 中的 linear 屬性表明該項是作為線性閱讀順序中的一項,還是和先后次序無關。有些閱讀器可以將spine中linear=no的項作為輔助選項處理,有些閱讀器則選擇忽略這個屬性。例如在下邊的實例中,支持輔助選項處理的閱讀器會依次列出titlepage、chapter01、chapter05,chapter02、chapter03、chapter04只在點擊到(或者其他開啟動作)之后才會顯示。

          但是對于支持打印的閱讀器,需要忽略linear=no的屬性,保證能夠最完全的展示ops中的內容。

          好的閱讀器需要同時提供兩種選擇給用戶。

          (二).ncx

          NCX 定義了數字圖書的目錄表。復雜的圖書中,目錄表通常采用層次結構,包括嵌套的內容、章和節。包含了TOC(tablet of content,提供了分段的一些信息)。

          NCX的 <head> 標記中包含四個 meta 元素:

          • uid:      數字圖書的惟一 ID。該元素應該和 OPF 文件中的 dc:identifier 對應。
          • depth:反映目錄表中層次的深度。
          • totalPageCount 和 maxPageNumber僅用于紙質圖書,保留 0 即可。

          docTitle/text 的內容是圖書的標題,和 OPF 中的 dc:title 匹配。

          navMap 是 NCX 文件中最重要的部分,定義了圖書的目錄。navMap 包含一個或多個 navPoint 元素,每個 navPoint 都要包含下列元素:

          • playOrder:說明文檔的閱讀順序。和 OPF spine 中 itemref 元素的順序相同。
          • navLabel/text :給出該章節的標題。通常是章的標題或者數字。
          • content :它的 src 屬性指向包含這些內容的物理資源。就是 OPF manifest 中聲明的文件。
          • 還可以有一個或多個 navPoint 元素。NCX 使用嵌套的導航點表示層次結構的文檔

          (三)NCX 和 OPF spine 有什么不同?

          兩者很容易混淆,因為兩個文件都描述了文檔的順序和內容。要說明兩者的區別,最簡單的辦法就是拿印刷書來打比方:OPF spine 描述了書中的各個章節是如何實際連接起來的,比方說翻過第一章的最后一頁就看到第二章的第一頁。NCX 在圖書的一開始描述了目錄,目錄肯定會包含書中主要的章節,但是還可能包含沒有單獨分頁的小節。

          一條法則是 NCX 包含的 navPoint 元素通常比 OPF spine 中的 itemref 元素多。實際上,spine 中的所有項都會出現在 NCX 中,但 NCX 可能更詳細。

          3. OCF

          OCF定義了文件是如何被打包成ZIP的,并且有兩個額外的信息:

          1)ASCII格式的mimetype文件。該文件必須包含application/epub+zip字符串,并且是ZIP壓縮包的第一個文件。Mimetype要求是非壓縮格式。

          2)一個命名為META-INF的文件夾。這個文件夾中需要包含container.xml文件

          4. Drm——需要在META-INF文件夾中包含rights.xml

           

           

          總結起來,一個epub電子書的zip包含以下東西:

          1、mimetype 文件,必須是壓縮包的第一個文件。注意,Mimetype必須是非壓縮格式。

          2、meta-inf目錄,里面至少包含一個container.xml 文件。

          3、OEBPS目錄(可以是別的名字,但建議用這個名字),包含了:

          a) image子目錄(不一定總有)存放了所有的圖片文件

          b) content.opf 文件名可以是其它的,擴展名一定是opf,就是一個xml格式的包內的文件列表

          c)  toc.ncx 目錄文件,一個“邏輯目錄”, 瀏覽控制文件.

          d) 一些xhtml或html文件。就是書的內容。

          簡單 EPUB 檔案的目錄和文件結構:

          mimetype
          META-INF/
             container.xml
          OEBPS/
            content.opf
            title.html
            content.html
            stylesheet.css
            toc.ncx
            images/

               cover.png

           

          三、Epub電子圖書獲取網站

          Feedbooks: http://www.feedbooks.com/books/top?range=month

          掌上書苑:  http://www.cnepub.com/index

          COAY: http://www.coay.com

          博酷網: http://www.pockoo.com/books/?format=EPUB&orderby=lastedit

          新浪ipad數碼資源 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等平臺。也能在各種格式之間轉換。http://calibre-ebook.com/

          Aldiko:android上的epub閱讀器。 http://www.aldiko.com/

           

          五、 Epub電子圖書編輯軟件

          epubBuilder:epubbuilder是國人自做軟件,手工制作時還是很好用的,尤其是每個章節的制作和目錄,比較方便,還提供了導入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

           

           

          六、創建一個EPUB文件

          參考資料:http://www.ibm.com/developerworks/cn/xml/tutorials/x-epubtut/section3.html

           

          1. 先建一個空的zip文件,可以取為任何名字,最好和你的書同名。

          2、拷貝mimetype文件到包內,注意所謂拷貝,就是這個文件不要用壓縮模式。

          3、把其它的目錄和文件用壓縮模式放入zip包。

          4、改文件擴展名為.epub
          ok
          !一本epub電子書就制成了。

           

          七、完整的EPUB規范

          OPF規范:http://www.idpf.org/2007/opf/OPF_2.0_final_spec.html

          OPS規范:http://www.idpf.org/2007/ops/OPS_2.0_final_spec.html

          OEBPS規范:http://www.idpf.org/ocf/ocf1.0/download/ocf10.htm


          來自
          http://www.cnblogs.com/linlf03/archive/2011/12/13/2286218.html

          posted on 2011-12-28 10:53 狼愛上貍 閱讀(741) 評論(0)  編輯  收藏 所屬分類: EPUB

          主站蜘蛛池模板: 洪江市| 白玉县| 溆浦县| 嵊泗县| 海阳市| 阳泉市| 资源县| 莱西市| 平乐县| 长兴县| 于都县| 永丰县| 买车| 武隆县| 卫辉市| 盐池县| 卢氏县| 金阳县| 南溪县| 扬中市| 东台市| 瑞丽市| 固安县| 奈曼旗| 偃师市| 常熟市| 木兰县| 澄迈县| 定边县| 金阳县| 河北区| SHOW| 拜城县| 邵东县| 阳谷县| 淮安市| 贵阳市| 万荣县| 陇西县| 赤峰市| 镇沅|