淺談:有關epub電子書的架構

本文介绍了EPUB电子书的基本组成及其内部结构,包括minetype、META-INF目录、OPS目录等,并详细解释了OPF文件的各个组成部分。

出自:http://cnepub.com/discuz/forum.php?mod=viewthread&tid=143743&extra=page%3D1&page=1


一、前言
      過去的這一年來,買了電子閱讀器,又進了書苑,開始對電子書(epub) 的格式產生了興趣。而根本原因是我買的Sony prs-t1 沒有刷機,也沒有漢化,所以一直要花時間在修改檔案上。也因為這樣,讓我有動機寫下這一個簡單的介紹,希望有興趣想入門的人可以來瞧瞧。
      書苑裡面製作電子書的大老們,對這個皮毛的簡介,就請輕輕放過,吐槽的聲音不要太大,以免影響大家的閱讀心情啊。

二、範圍:
      本文唯一的重點就在一個epub檔案裡面,到底有哪些成分及組成。

      本文不涉及標準的介紹,所以由哪些單位制定標準,或者又定義了哪些標準,就不贅述。  而市面上五花八門的閱讀器及閱讀的軟體,自然要遵循這些標準而制定,他們的優劣程度如何,也不在本文的討論範圍內。

      製作電子書,可以透過一些現成的工具來完成,書苑裡面有很多類似的教程,也請自行參閱。

      Html 語法,請自行蒐尋網路上的教學網站。
      本帖資料參考來源( http://www.slideshare.net/aecro/e-pub)

三、附檔名 *.epub ?
      其實,epub 基本上就是一個符合zip 格式的壓縮檔。用一般的解壓縮程式,就可以解開。( 免費的7-ZIP 就可以用了)

四、檔案結構
      首先,參看下面這個圖形,可以大概知道一個epub 檔案,裡面的組成。

     


      一個epub 檔案未壓縮前,大致上分為三個部分:
      1.     檔案 minetype
      2.     META-INF 目錄
      3.     OPS 目錄 (或OEPBS目錄)
      下一章就對這三個部份,逐一做介紹。

五、epub 檔案組成的介紹
       1.     檔案 minetype
              每一個epub都有一個minetype檔,內容為
                  application/epub+zip
              其意義為這個檔案可以被epub工具,或zip工具打開。

       2.     META-INF 目錄
              META-INF目錄裡面,包含了一個必要的檔案[container.xml]及其他非必要的檔案。
              a.     Container.xml:用來告訴瀏覽器根文件(root file)的路徑,以及開啟的方式。
                                          瀏覽器必須找得到這個最基本的文件位置,才能正確的開啟檔案。
                     例子:
                     <?xml version=“1.0” Encoding=“UTF-8” ?>
                     <container version="1.0“mlns="urn asis:names:tc pendocument:xmlns:container">
                     <rootfiles>
                     <rootfile full-path="content.opf" media-type="application/oebps-package+xml"/>
                     </rootfiles>
                     </container>
             這個例子中,container.xml檔案宣告了電子書的根文件為content.opf而且該檔案放在根目錄下,
             另外也宣告這個opf檔案是用xml的格式來撰寫的。如果你要移動這個opf檔案的位置到OPS的目錄下,
             則必須把參數中的rootfile full-path="content.opf" 改成 rootfile full-path="OPS/content.opf"

             b.     其他(非必要)檔案
                                   i.               manifest.xml (文件列表)
                                 ii.               metadata.xml (後設資料)
                               iii.               signatures.xml (數位簽章)
                                iv.               encryption.xml (加密規則)
                                  v.               rights.xml (權限管理)

       3.     OPS 目錄
              用來放置符合OPS (Open Publication Structure)所規範的檔案,如opf,css, ncx檔案。
              為了方便辨識,也可以在這個目錄下面建構次目錄,用來放置不同章節的檔案(chapter)、
              排版樣式檔案(css)以及圖檔(image)。
              a.     css
                     Epub裡面的檔案,大部分都是用html語法來呈現的,css是用來宣告一些使用者可
                     以自行定義使用的樣式,html檔案可以去參考這個CSS來呈現不同的閱讀風格。一
                     個電子書裡面,可能有十幾個html檔案(檔案個數製作者可以自行決定, 一般會依
                     章節拆分),透過一個參照外部css檔案的命令,就不需要在每一個獨立的html檔案內,
                     重複宣告那些樣式。
              b.     image
                      就是一些插圖或封面檔案

              c.      opf檔案
                      OPF檔案說明了這個epub檔案裡面包括了哪些單元,以及裡面的單元的結構及閱覽順序等資訊。
                      一個OPF檔案由五個部份組成:
                      <metadata>:描述電子書的相關資訊
                      <manifest>:電子書個單元的列表
                      <spine>:閱覽順序
                      <tours>: 給讀者導讀的部分
                      <guide>:各單元的類別型態
                      我們特別把這個檔案,在下一章獨立介紹。

六、OPF的介紹
      參考下圖,一個OPF檔案由五個部份組成。

        

            [opf組成圖]

       1.     <metadata> 用來描述詮釋資料,可以分為<dc:metadata>及<x:metadata>
              a.     <dc:metadata> 採用dubline code (DC) 的15項核心元術
                     <title>: 標題
                     <creator>: 製作者
                     <subject>: 主題
                     <Description>: 描述
                     <contributor>: 貢獻者
                     <date>: 日期
                     <type>: 類型
                     <format>: 格式
                     <identifier>: 標識符號
                     <source>: 來源
                     <language>: 語言
                     <relation>: 相關訊息
                     <coverage>: 涵蓋範圍
                     <rights>: 權限
             b.     <x:metadata> 上面標準的DC元素中無法描述的,可以在此自行擴展

       2.     <manifest> 電子書各個單元的列表,格式如後:
              <item id=“ ”, href=“ “, media-type=“ “>
               id是這個單元的名稱,href後面帶的是對應到該單元的檔案
                     Ex:
                     <item href="calibre_raster_cover.jpg"id="cover" media-type="image/jpeg"/>   
                     <item href="OPS/chapter1.html" id="chapter1"media-type="application/xhtml+xml"/>

       3.     <spine toc=“ncx”>:在manifest後,只能有一個,後面的itemref出現次序,代表閱讀次序
                     Ex:
                     <itemref idref="coverpage"/>   
                     <itemref idref="chapter1"/>
                     <itemref idref=“cover“ linear=“yes”/> ,其中linear 代表循序閱讀與否 (可略)

       4.     <tour> 設定不同的條件,給予不同的導讀。每個tour要有一個title屬性及若干個site標籤
              <site> 標籤要有 titel及href,而href要對應到manifest裡的某一個項目
                     Ex:
                     <tour id=“tour1” title=“young guest”>
                     <site title=“Chicken Fingers “ href=“appetizers.htm#r3” />
                     <site title=“Chicken a la King “ href=“entrees.htm#r5” />
                     </tour>

       5.     <guide> 一個或多個reference標籤,宣告manifest裡的資源的類型,包含下面15種類型:
              cover, title-page, toc, index,glossary, acknowledgements, bibliography, colophon, copyright-page,
              dedication,epigraph, foreword, loi (list of illustration), lot (list of tables), notes,preface, text
                     Ex:
                     <guide>
                     <reference type=“toc” title=“Table” href=“toc.html”/>
                     <reference type=“loi” title=“Illustration”href=“toc.html#figures”/>
                     </guide>

七、回顧
      簡單的回顧這個組成運作的原理如下:
      1. 閱讀器的瀏覽工具先在minetype檔案中,得知這是一個符合ZIP壓縮規則的epub檔。
      2. 瀏覽器接著在META-INF目錄下的container.xml檔案中,找到了content.opf及其位置。
      3. 上面的content.opf檔案裡面,描述了這一個epub格式的電子書,裡面所要呈現的各個要件及閱讀的順序。

源码链接: https://pan.quark.cn/s/a4b39357ea24 斐讯K2是一款广受用户青睐的无线路由器,其运行表现稳定且具备较高的可操作性,在DIY爱好者群体中拥有极高的声誉。本资料将系统性地阐述斐讯K2的固件刷机方法及其关联的技术要点。固件升级是路由器爱好者改善设备性能、扩展功能的一种普遍手段,经由替换出厂固件,能够达成更加个性化的网络配置、增强安全防护等目标。斐讯K2固件资源库涵盖了多种知名的非官方固件,诸如Tomato Pheonix 不死鸟、高恪、PandoraBox 潘多拉等,这些固件均具备独特的优势,能够适配不同用户的需求。 1. Tomato Pheonix 不死鸟:Tomato是一款立足于Linux的开源固件,以其精巧、高效而备受推崇。不死鸟版本是专门为华硕及斐讯路由器优化的分支,提供了卓越的QoS(服务质量)配置、详尽的图表监控以及便捷的固件升级途径。对于那些需要精准调控带宽和监测网络状态的用户而言,这是一个理想的选项。 2. 高恪:高恪固件是OpenWrt的定制化版本,着重于操作的便捷性和运行的可靠性,特别适合对路由器操作不甚熟悉的用户群体。它提供了一些实用的功能,例如内置的广告屏蔽、快速测速工具等,同时保留了OpenWrt的适应性。 3. PandoraBox 潘多拉:潘多拉盒是另一款基于OpenWrt的固件,它以丰富的插件库和强大的自定义潜力而闻名。用户能够依据个人需求安装各类插件,实现更多功能,如远程接入、DDNS(动态域名解析服务)等。 4. 官方固件的纯净版本与定制版本:官方固件通常更侧重于稳定性,纯净版意味着未预置额外的应用或服务,适合注重稳定性的用户。定制版则可能包含了制造商的特色功能或优...
源码下载地址: https://pan.quark.cn/s/926926948560 AS3.0与XML结合的通用图片滚动功能,是一种基于ActionScript 3.0和XML技术的动态图像展示方案,非常适合初学者进行学习和实践应用。此项目的关键在于借助XML文件作为数据媒介,用来保存图像的相关参数,例如图像的链接地址、展示的次序等,接着在AS3.0环境中对XML进行解析,并动态地载入和展示这些图像,达成图像的滚动或是循环播放的目的。 我们需要明确ActionScript 3.0(AS3.0)是Adobe Flash Professional以及Flex Builder等开发工具中采用的编程语言,用于构建交互式内容以及丰富的互联网应用。相较于先前的版本,AS3.0在性能上有了大幅度的提升,并且引入了更为规范的面向对象编程模式,涵盖了类、接口以及包等概念。 XML(可扩展标记语言)是一种简明且高效的数据传输格式,既便于人类阅读和编写,也易于机器进行解析和生成。在该项目中,XML文件用于存储图像数据,例如图像的URL、延时的时长、动画的样式等,通过这种方式可以将数据与程序代码分离,从而增强代码的可维护性与可扩展程度。 实施这一图片滚动功能,主要涉及到以下AS3.0的核心知识点: 1. **XML解析**:运用`XML`类来载入并解析XML文件,从而获取图像的清单。AS3.0提供了简便的API来操作XML节点,例如`children()`、`attributes()`等,用以获取子节点和属性值。 2. **事件监听**:借助`EventDispatcher`类来监控载入和解析过程中的事件,比如`Event.OPEN`、`Event.PROGRESS`、`Event...
内容概要:本文介绍了软件许可管理的技术实现方式及相关工具资源,重点阐述了加密外壳(EMS)和API加密两种保护机制。加密外壳通过将程序(如.exe、.dll、.apk)封装在加密壳中,实现运行时内存解密,防止静态反编译和代码篡改,同时支持对数据文件、系统参数及部分代码的加密,并依赖硬件锁(HL)或软件锁(SL)进行授权控制。API加密则通过在代码中嵌入安全验证调用,确保授权合法后才执行核心逻辑。文章还说明了锁的类型(HL/SL)、模式(有驱/AdminMode与无驱/UserMode)、升级路径以及虚拟时钟功能,并描述了产品授权流程从功能定义到产品创建、授权生成的全过程,支持通过C2V文件或锁ID复制已有授权状态。文中附带多个开源平台链接和技术博客参考资源。; 适合人群:从事软件版权保护、授权系统开发或安全技术研究的研发人员,尤其是具备一定逆向工程、软件安全基础的1-3年经验开发者。; 使用场景及目标:①构建安全的软件授权体系,防止盗版和非法使用;②实现灵活的功能授权管理(如时效、并发、硬件绑定);③选择合适的加密方案(硬件锁/软锁、有驱/无驱)并集成到现有产品中;④学习加密外壳与API验证的实际应用方法; 阅读建议:此资源侧重于软件许可的技术架构与实施细节,建议结合提供的GitHub、Gitee项目链接及CSDN技术文章深入理解实现原理,并通过实际调试加密壳和模拟授权流程加强实践能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值