HTML5技术

开发node桌面级应用工具:apk转化epub - 【Aaron】

字号+ 作者:H5之家 来源:H5之家 2015-10-28 09:08 我要评论( )

随着苹果iBooks对国内的开放,最近接了个麻烦的需求: 把现有的APK转化支持苹果ibooks电子书的epub格式(标准的xhtml静态文件) 考虑到最终是桌面级应用工具,我这里采用了node语言编写 当然用node的原因也是因为有神器node-webkit,可以把node打包成exe执行文

随着苹果iBooks对国内的开放,最近接了个麻烦的需求:

把现有的APK转化支持苹果ibooks电子书的epub格式(标准的xhtml静态文件)

考虑到最终是桌面级应用工具,我这里采用了node语言编写

当然用node的原因也是因为有神器node-webkit,可以把node打包成exe执行文件

 

具体的思路流程:

读取apk文件 =》改名rar =》解压后读取web目录

通过sqlite3读出数据,分析数据结构,根据数据创建对应的基本页面 n*.xhtml多个,并且把对应页面的数据关联到指定的页面

对比下单页面结构与多个xhtml静态文件

单页面,通过JS动态渲染HTML结构,页面总入口都是同一个

1

静态xhtml

2

编译出来的结构

image

把一个index分解成多个xhtml页面,每个页面的js、css等资源代码都是共享的,所以需要在每一个页面写入不同的数据,用来区分页面

架设一个web服务端,通过http加载这些xhtml页面,通过浏览器解析就能得到最终独立xhtml的结构

由于执行代码做了接口处理,只要xhtml中传递不同的页码,代码就自动执行不同的页面,这样就能达到,不同的页面都有不同的解析结果

由于是node全自动操作,所以web与页面的解析都必须通过自动化工具处理,这里我用的是browser-sync与phantomjs

通过phantomjs 解析后就能拿到浏览器渲染后的HTML结构了

 

遇到的问题:

解压丢失文件:node确实没有一个解压插件好使,最终用shell执行脚本命令,通过调用winrar软件处理

node-webkit不支持64位的sqlite3读取:这是因为nodejs和node-webkit的ABI不同,处理的办法就是重新编译64位的sqlite3,我估计很难成功,后来找了一款神器 sql.js直接数据库分解

phantomjs可以通过execFile调用,但是执行路径,是以node调用命名为根路径计算的

phantomjs加载页面,需要监听onResourceReceived事件,之后再获取数据,因为数据的加载时需要事件的,JS或者页面有请求,必须有一个延时的等待

通过browser-sync做服务器,phantomjs获取的html的结构中会有__bs_script__这个注入节点,需要删除

通过browser-sync做服务器,background加载的url都会加上整个http跟地址,所以在最终数据中需要处理

 

 

最后打包后的效果

image

UI有点丑,还在弄。。。

如果有这方面需求,或者有啥疑问的,可以留言。。。。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

    【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

    2017-04-30 16:00

  • 在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

    在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

    2017-04-28 15:00

  • vue-cli webpack在node环境下安装使用 - 孙三峰

    vue-cli webpack在node环境下安装使用 - 孙三峰

    2017-04-23 11:00

  • 随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 - 在路在的张

    随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 -

    2017-04-22 08:04

网友点评