前一阵子忽然想给我写的一个编辑器增加阅读UMD文件的功能,就上网查了查相关资料。
结合网上的资料我写了一个UMD解析的类(for VC,其中调用了zlib动态库),完整的类文件上传在我的资源中。
以下就把我感觉不错的一个资料给大家共享下:
UMD是一种常用的电子书格式,本文只对文本类型的格式进行解析,动漫格式不做涉及。本文是搜集网络上关于UMD文件的资料并进行整理而成的,其中有些信息还不完整,可能还有的信息没有提到。这不是一本大全,仅仅是对一些常见块的分析。
作者:Dandelion <cnbeta2005@gmail.com>
日期:2010/8/22
免责声明
本文档仅做学习交流之用,您可以在不修改文档的前提下任意分发该文档,对于使用文中内容发生的侵权行为及对您造成的损失,本人将不承担任何责任!
概要介绍
UMD文件有三种格式类型,一种叫纯文本格式,一种叫漫画&写真集格式,以及连环画(文字+图画)。本文只涉及纯文本格式的UMD,后面将直接使用UMD指代这类格式的文件。
UMD文件总体上是由一组连续的块组成的,每一块按照约定的顺序先后排列在一起构成了UMD文件的结构。根据块的职责,我将其分成两类:功能块和数据块。有的功能块自身就可以完全的描述信息,而有的一些由于信息量大,特别地将数据放在别处(即数据块),如正文、章节偏移和章节标题,它们使用一个功能块和若干个数据块,通常数据块都紧接在相应的功能块之后出现。
块标识
下表列出了已知的块标识:
块标识 |
描述 |
参数定义 |
0x01 |
umd文件头 |
DCTS_CMD_ID_VERSION |
0x02 |
文件标题 |
DCTS_CMD_ID_TITLE |
0x03 |
作者 |
DCTS_CMD_ID_AUTHOR |
0x04 |
年 |
DCTS_CMD_ID_YEAR |
0x05 |
月 |
DCTS_CMD_ID_MONTH |
0x06 |
日 |
DCTS_CMD_ID_DAY |
0x07 |
小说类型 |
DCTS_CMD_ID_GENDER |
0x08 |
出版商 |
DCTS_CMD_ID_PUBLISHER |
0x09 |
零售商 |
DCTS_CMD_ID_VENDOR |
0x0B |
内容长度 |
DCTS_CMD_ID_FILE_LENGTH |
0x0C |
文件结束 |
DCTS_CMD_ID_FIXED_LEN |
0x81 |
正文 |
DCTS_CMD_ID_REF_CONTENT |
0x82 |
封面(jpg) |
DCTS_CMD_ID_COVER_PAGE |
0x83 |
章节偏移 |
DCTS_CMD_ID_CHAP_OFF |
0x84 |
章节标题,正文 |
DCTS_CMD_ID_CHAP_STR |
0x87 |
页面偏移(Page Offset) |
DCTS_CMD_ID_PAGE_OFFSET |
0x0A |
CONTENT ID |
DCTS_CMD_ID_CONTENT_ID |
0xF0 |
CDS KEY |
DCTS_CMD_ID_CDS_KEY</ |