epub文件格式揭秘

    技术2023-05-09  69

      应该说 epub只是html文件,通过第三方压缩软件压缩而成。因此可以通过第三方软件解压。

    而mobi文件是根据简单的压缩原理(见上篇文章)为了和mobi格式文件比较,才有此篇内容。

      闲话少叙,直接上代码:

    (function handleFile(f) {  //网页文件中标签file 打开的文件。 var new_zip= new JSZip(); //创建 jszip 实例 var entry=null; var showflag=true;     new_zip.loadAsync(f).then(function(zip) { //f是file标签打开的文件即:epub图书文件。         zip.forEach(function (relativePath, zipEntry) {                  if(zipEntry.name.indexOf(".jp")>0 && showflag){                   entry=zip.file(zipEntry.name).async("base64"); //参数"base64"很重要,否则显示不了封面                    showflag=false;                    if(entry) entry.then(function(data){                        data='<img src="data:image;base64,'+data+'" width="100%" height="100%" >';                        $(".cover").html(data); //显示封面图片(可能有很多图片,只选一张作为封面)                   });               }               else    if(zipEntry.name.indexOf("htm")>0) { //epub 图书有用“xhtml、html、htm”为扩展名的。                     entry=zip.file(zipEntry.name).async("string");                     if(entry) entry.then(function(text){                         text=text.split("<body")[1];                      text=text.split("</body>")[0];                     text=text.replace(/<\/p>/gi,"\n");                     text =text.replace(/<[^>]*>|/g,"");                     text=text.replace(/\n\n\n/g,"\n");                     text=text.replace(/\n\n/g,"\n");                      htmlText.push(textToHtml(text));//存放全部章节内容                     });                  }         });     }, function (e) {          return e.message     }); })(f);

    比较mobi文件,解压后得到的文件和图片都是一样的,这里是引用jszip进行解压。

    以上代码在360浏览器和火狐浏览器测试通过。苹果浏览器不支持。

    测试效果:

    测试图书为1600本英文图书(10年前网上就有了,内容还算完整,但许多没有目录...),但多数都能通过示例代码打开。

    跟以前文章一样贴上效果图:

    管理博客

    Processed: 0.010, SQL: 9