Android 文件阅读器调研
前言
移动端无纸化作为一种趋势,文件阅读器是一种基本需求,iOS 系统天然的对 Office 组件的支持,直接可以在应用内打开,Android 里面就比较头疼了,对于 PDF、Word、Excel、PPT、TXT 等多种格式的文件要支持预览,本身就没有一个特别好的统一的方式,本文是笔者搜索一些资料做的一个汇总。
集成现成的产品
使用 GoogleDocs、office online 等在线预览
在线平台获取文档的 URL,通过 Office 平台提供的链接地址指向需要预览的文档地址即可,例如:
GoogleDocs:
https://docs.google.com/viewer?url=http://video.ch9.ms/build/2011/slides/TOOL-532T_Sutter.pptx
这种方案存在的问题是国内通常情况下访问不了 Google 提供 的服务,因此这种方案可以不考虑。
office online:
https://view.officeapps.live.com/op/view.aspx?src=http://video.ch9.ms/build/2011/slides/TOOL-532T_Sutter.pptx
平台地址:http://view.officeapps.live.com/op/view.aspx?src=
和文档地址通过拼接的地址即可实现 office 的在线预览。
Office 平台在线预览限制:
- Word 和 PowerPoint 文档必须小于 10 M,Excel 必须小于 5M;
- 文档支持的格式:
- Word: docx dotx
- Excel:xlsx、xlsb、xls、xlsm
- PowerPoint: pptx、 ppsx、 ppt、 pps、 potx、 ppsm
调起第三方支持 Office 阅读的应用
可行方案中最简单的一种方式,缺点是会跳出自己的应用转到第三方应用中,而且需要具备以下两个条件:
- PDF 文件需要下载到本地,不支持在线阅读
- 用户手机中安装了支持 PDF 阅读的应用
实现这个方案的代码示例如下:
public Intent openWord(File file) {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri, "application/msword");
return Intent.createChooser(intent, "Open File");
}
集成第三方 SDK 通过 Android 原生实现
TBS 腾讯浏览服务是一个不错的三方 SDK 集成选择:
其他的 SDK 类似不做列举,基本上都是 SDK 集成的问题了。
企业级云端在线 Office 私有化部署
毕升 Office 推出基础版和集成版两个私有化部署基本版本;目前面向所有用户免费。基础版是指包含:毕升 Office 的企业云盘(文件云端管理,组织结构权限,文件/团队共享等)+ 毕升云端 Office。满足企业 Office 文件云端协作以及云端编辑,预览的需求。基础板部署脚本托管在 github 和国内的 gitee。
基于开源方案改造
PDF 的解决方案
- PDF.js,提供了一套较完善的在 H5 页面中阅读 PDF 的方案,同时支持 Web 前端,Android 和 iOS WebView 加载。
- PDFium:Google 和 Foxit 合作开源的 Foxit 的 PDF 源码,作为 Chrome 浏览器的 PDF 渲染引擎组件,当然这是 C/C++ 实现的。
- PdfiumAndroid:mshockwave 基于 PDFium 基础上适配 Android 平台的函数库,barteksc 在这个基础上再做了一些修改。
- AndroidPdfViewer:barteksc 基于 PdfiumAndroid 基础上实现的一个 PDF 阅读 Demo,支持常见的手势,缩放,双击等效果。
Word 的解决方案
- poi: POI 为 Java 系处理 office 文档的比较优秀的开源库,移植到 Android 相对比较复杂,问题也比较多。
- poi-on-android:基于 POI 移植到 Android 的版本,相对 POI 做了一些改进,但是基本是也是比较空缺的。
- 使用 POI 读写 word docx 文件
- Apache POI Word
Excel 的解决方案
写这些代码也许就一两个小时的事,写一篇大家好接受的文章需要几天的酝酿,如果文章对您有帮助请我喝杯咖啡吧!