剑客
关注科技互联网

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

前几天看见 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 文件阅读功能调研

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址