jmbook.dat的手機電子書格式

來源:互聯網
上載者:User

    最近有很多朋友問jmbook.dat是一個什麼樣的電子書格式,以及手機電子書製作軟體如何開發的問題,那我就在今天這篇文章裡一起來做個說明。

    先來介紹一下jmbook.dat的格式,說白了,它其實就是一個jar包,只是改了一下副檔名,這個包裡已經包含了在手機上運行所需要的java基本程式碼,它所缺少的只是跟具體手機電子書內容相關的部分,(角摩手機電子書,http://www.joymo.cn)把內容部分加入到這個jar包後,它就是一個完整的可以在手機上安裝啟動並執行手機電子書jar檔案了。

  那麼內容部分包括什麼東西,又怎麼把內容部分加入到.dat檔案中,這便是joymobiler整個手機電子書製作軟體的核心。 首先我們來看看哪些內容是我們要放到.dat中去的,包括三部分,索引檔案,資料檔案以及MANIFEST。

    一、索引檔案(該索引檔案採用跟JBookMaker一樣的格式,所以相容JBookMaker的電子書)

    它的格式是固定的,如果不能按正確的格式產生索引檔案,程式在運行後就沒法正常顯示電子書內容,檔案名稱就是"0"。格式如下:

頭三個位元組:0x00,0x01,0x30

雙位元組:書名長度

接著位元組:書名內容 (UTF8編碼)

雙位元組:書的章節數量長度

接著位元組:書的章節節數量(UTF8編碼)

雙位元組:第一章區段標頭長度

接著位元組:第一章區段標頭內容(UTF8編碼)

...(其餘章區段標頭長度和標題內容)

四位元組:著作權資訊長度

接著位元組:電子書進入時的介面顯示內容,可以放作者、製作者一類的資訊,用斷行符號換行分隔即可(UTF8編碼)

  二、資料檔案

  檔案名稱從1開始,按2,3,4。。。在順序依次遞增,資料檔案的數量跟索引檔案中書的章節數量一致。檔案採用UNICODE編碼方式。

  三、MANIFEST.MF檔案

  這個檔案是一個描述檔案,UTF8編碼,大部分內容是固定的,格式化如下:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: www.joymo.cn
MIDlet-1: BookName,/jm.PNG,JavaBook
MIDlet-Vendor: Joymo.cn
MIDlet-Version: 1.0
MIDlet-Name: BookName
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0

 只需修改bookname部分,這樣安裝後就可以在手機上看到有“bookname”的電子書了。

   瞭解以上內容後,即便是我們手工產生了以上部分,把JMBook.dat改成JMBook.jar,然後把以上三部分的檔案加入到JMBook.jar中,即可以放到手機上安裝了。如果是想通過程式的方式實現,這其中的需要注意的地方是二點:

    一、注意內容的編碼方式,很多時候我們是GB2312的文本,要注意轉換,在VC中可以用MultiByteToWideChar和WideCharToMultiByte進行處理。編碼格式的轉換可以參考如下代碼:

    BYTE utf32_le[]={0xFF,0xFE,0x00,0x00};
    if(memcmp(lpstrInputStream,&utf32_le,4)==0)
        return UTF32_LE;

    BYTE utf32_be[]={0x00,0x00,0xFE,0xFF};
    if(memcmp(lpstrInputStream,&utf32_be,4)==0)
        return UTF32_BE;

    BYTE utf_8[]={0xEF,0xBB,0xBF};
    if(memcmp(lpstrInputStream,&utf_8,3)==0)
        return UTF_8;

    BYTE utf16_le[]={0xFF,0xFE};
    if(memcmp(lpstrInputStream,&utf16_le,2)==0)
        return UTF16_LE;

    BYTE utf16_be[]={0xFE,0xFF};
    if(memcmp(lpstrInputStream,&utf16_be,2)==0)
        return UTF16_BE;
    // Else

    if(IsTextUnicode((void *)lpstrInputStream,iLen,NULL))

        return UTF16_LE;

    二、操作jar檔案

    產生的內容最終是要加入到JMBook.dat所對應的jar檔案中的,而jar是一種標準的zip檔案,有很多開源的代碼支援對jar在操作,比如zlib等。

    知道了這兩部分的機制後,剩於下的工作其實就很簡單了,就是把產生的內容直接壓入到jar檔案中即可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.