前几天看见 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 地址格式如下:
|
|
优点:使用简单,无需服务器和客户端的额外部署工作。
缺点:国内需要翻墙访问。
Office Web 365
第三方公司提供的一种 Office 文档在线预览的功能,能够实现 Microsoft、Adobe、WPS 文档的移动端和PC端在线网页访问。使用简单,类似 Google Doc 访问方式,一个固定格式的链接,轻松实现:
|
|
地址:http://www.officeweb365.com/
优点:功能强大,使用简单。
缺点:付费使用(可免费受限使用,如访问次数、广告显示等)。
永中云转换
和上面的「 Office Web 365 」提供的服务一样,重点在于免费,并且没有弹窗遮盖等形式的广告,目前处于公测阶段,不过官方已经表态,将来也不会收费,只是对于超大访问量将采取适度收费。
地址:http://www.yozodcs.com/index.html
优点:免费使用。
缺点:稳定性有待验证。
打开本地应用
如果移动设备中安装有能够打开 Office 文档的本地应用,也可以借助它们打开所要操作的文档,当然前提是必须先将远程文档下载到设备的本地存储空间中:
|
|
优点:可读可写。
缺点:需要先行下载,同时设备中存在能够打开文档的本地应用,并且阅读时会离开当前应用。
第三方 SDK
网上有一些免费开源的解析源码和第三方公司提供的付费 SDK,将其嵌入自己的项目中,便能使用其中的功能操作 Office 文档。这种方式的缺点也显而易见,最直接的就是大大增加了 APK 安装文件的大小。免费的开源项目,存在一些局限性和不稳定性,操作繁琐;付费 SDK ,使用起来相对较为简单。
免费开源
-
Google 的开源项目,也是 Chrome 浏览器的PDF渲染引擎,初始代码来自国内知名PDF技术公司「福昕」。
-
基于 pdfium 的两个 Android 平台实现方式,支持 PDF 文档的应用内预览,支持动画、缩放、手势和双击操作。
-
一个轻量级的 开源 PDF 和 XPS 查看器。
付费 SDK
-
福昕出品,性能稳定,功能强大,支持 PDF 的显示、导航、创建、搜索、注释、保护、PDF文本提取、图片转换、表单数据收集和编辑等功能。
-
来自国外的一个付费 SDK,使用简单,只需三步即可集成到自己的应用中并使用。
服务器端解析
需要在服务器端完成 Office 文档的解析工作,通过一些技术手段将文档转换为 Html 文件或者 图片,然后再在客户端通过 WebView 加载显示。
-
「 mozilla 」开源的一种JS解决方案,提供了服务器和客户端两种集成方式。
-
类似
PDF.js
,在服务器端集成,利用 Web技术完成 Office 文档的解析工作。
总体来说,在 Android 平台上实现 Office 文档的预览和编辑功能,属于一个较为棘手的问题,需要结合实际产品需求和开发成本、稳定性等多方面考虑。当然,如果不是硬需求,最好不要随意集成开源 SDK,毕竟研发成本过高,同时稳定性不见得如你所想。
最后,再次感谢 asce1885 的总结,参考地址:Android 实现 PDF 文件阅读功能调研。