前几天看见 asce1885 总结的一篇有关 Android 平台上浏览 PDF 文件的文章,列出了多种实现方式以及它们的优缺点,较为详细。刚好,不久前,个人经手的一个项目中也涉及到了 Office 文档(常见如 PDF、EXCEL、WORD、PPT等)在线阅读的功能,并为之做了一番了解,故写下此文,在该文章的基础上,做一些个人的补充完善,供后续再次使用时能有所翻看。

在 iOS 平台上,实现移动端 Office 文档的在线阅读非常简单,只需要使用 WebView 加载网络文件的 Url 地址即可显示。而在 Android 平台上,由于“高墙耸立”,Google 在国内的访问限制,导致这一简单的操作变得复杂起来,开发人员不得不寻求其他解决方案,这里列举一些。

WebView 网页显示

借助 WebView 控件加载远程文档的 Url 地址即可,这里有 Google Doc 和 Office Web 365 两种解析方案。

Google Doc

类似 iOS ,Google 也提供了一种在线文档解析的功能,只需要按照固定的格式将远程文档的 Url 地址传给 Google 服务器,即可利用 WebView 控件加载新的 Url 地址,显示即可。WebView 加载的 Url 地址格式如下:

https://docs.google.com/gview?embedded=true&url=文档地址

优点:使用简单,无需服务器和客户端的额外部署工作。
缺点:国内需要访问。

Office Web 365

第三方公司提供的一种 Office 文档在线预览的功能,能够实现 Microsoft、Adobe、WPS 文档的移动端和PC端在线网页访问。使用简单,类似 Google Doc 访问方式,一个固定格式的链接,轻松实现:

http://ow365.cn/?i=您的网站ID&furl=文档地址

地址:http://www.officeweb365.com/
优点:功能强大,使用简单。
缺点:付费使用(可免费受限使用,如访问次数、广告显示等)。

打开本地应用

如果移动设备中安装有能够打开 Office 文档的本地应用,也可以借助它们打开所要操作的文档,当然前提是必须先将远程文档下载到设备的本地存储空间中:

Intent intent = new Intent(Intent.ACTION_VIEW);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//officeFile:本地文档;type:文档MIMEType类型,可以使用文件格式后缀intent.setDataAndType(Uri.fromFile(officeFile), type);if (intent.resolveActivity(getPackageManager())!=null){  startActivity(intent);}

优点:可读可写。
缺点:需要先行下载,同时设备中存在能够打开文档的本地应用,并且阅读时会离开当前应用。

第三方 SDK

网上有一些免费开源的解析源码和第三方公司提供的付费 SDK,将其嵌入自己的项目中,便能使用其中的功能操作 Office 文档。这种方式的缺点也显而易见,最直接的就是大大增加了 APK 安装文件的大小。免费的开源项目,存在一些局限性和不稳定性,操作繁琐;付费 SDK ,使用起来相对较为简单。

免费开源

  • pdfium

    Google 的开源项目,也是 Chrome 浏览器的PDF渲染引擎,初始代码来自国内知名PDF技术公司「福昕」。

  • AndroidPdfViewer

  • PdfiumAndroid

    基于 pdfium 的两个 Android 平台实现方式,支持 PDF 文档的应用内预览,支持动画、缩放、手势和双击操作。

  • MuPDF

    一个轻量级的 开源 PDF 和 XPS 查看器。

付费 SDK

  • Foxit PDF SDK

    福昕出品,性能稳定,功能强大,支持 PDF 的显示、导航、创建、搜索、注释、保护、PDF文本提取、图片转换、表单数据收集和编辑等功能。

  • plugPDF

    来自国外的一个付费 SDK,使用简单,只需三步即可集成到自己的应用中并使用。

服务器端解析

需要在服务器端完成 Office 文档的解析工作,通过一些技术手段将文档转换为 Html 文件或者 图片,然后再在客户端通过 WebView 加载显示。

  • PDF.js

    「 mozilla 」开源的一种JS解决方案,提供了服务器和客户端两种集成方式。

  • pdf2htmlEX

    类似 PDF.js,在服务器端集成,利用 Web技术完成 Office 文档的解析工作。

总体来说,在 Android 平台上实现 Office 文档的预览和编辑功能,属于一个较为棘手的问题,需要结合实际产品需求和开发成本、稳定性等多方面考虑。当然,如果不是硬需求,最好不要随意集成开源 SDK,毕竟研发成本过高,同时稳定性不见得如你所想。

最后,再次感谢 asce1885 的总结,参考地址:Android 实现 PDF 文件阅读功能调研。

本文由 亦枫 创作并首发于 亦枫的个人博客 ,同步授权微信公众号:技术鸟(NiaoTech)。

欢迎各种形式地交流与转载,注明作者及出处即可。

本文标题为: Android 阅读 Office 文档,所有你能想到的解决方案都在这啦

本文链接为:http://yifeng.studio/2016/11/06/android-office-document-viewer/

更多相关文章

  1. (安卓/android)应用层绕过HAL调用驱动
  2. 长聚微嵌 DMA-210U Android(安卓)入门第一天------烧写uboot、ke
  3. 众多Android(安卓)开源项目推荐,给力工作给力学习(转载)
  4. Android(安卓)Okhttp3 (二) 二次封装请求管理类
  5. My Github Start
  6. android studio下Maven管理android的库
  7. Android(安卓)读取拍照或相册uri 转换成图片的绝对路径
  8. android 官网登陆不上解决办法
  9. Daily Android

随机推荐

  1. 享受 Android 应用程序的 Java 技术盛宴
  2. react native for android 包名修改
  3. Android Studio运行main方法报错 SourceS
  4. android中的布局简要介绍
  5. android 存储数据与文件
  6. Android短信编解码方式
  7. Android(安卓)Studio witing for debugge
  8. android 与c#服务端DES加密不一致问题解
  9. Activity的布局
  10. 2013.03.19(2)———android ActivityGroup