zoukankan      html  css  js  c++  java
  • jmbook.dat的手机电子书格式

        最近有很多朋友问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文件中即可。





  • 相关阅读:
    VMware Ubuntu安装详细过程
    Ubuntu16.04下安装sublime text3
    Linux ubuntu下svn的命令使用指南
    Ubuntu 安装Phpstorm+汉化+激活
    ubuntu下安装php openssl扩展
    Unbuntu三行命令安装Google
    ①Python简史
    单向链表操作
    特殊文件(下)
    特殊文件(上)
  • 原文地址:https://www.cnblogs.com/freemobile/p/1406928.html
Copyright © 2011-2022 走看看