说起阅读Office文档,还是不得不羡慕IOS平台,人家只需要使用 WebView 加载网络文件的 Url 地址即可显示,而回头再看看我们Android,就比较苦逼了,“高墙耸立”之下,Google 在国内的访问限制,使本来简单的操作,变得不再简单。

其实如果没有某些权限的设置,Android实现起来也是很easy,只需要借助 WebView 控件加载远程文档的 Url 地址即可。

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

除了Google 提供的这种在线文档解析,一些第三方的公司也提供了这种功能,比如Office Web 365:

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

这是相关地址:http://www.officeweb365.com/,其使用起来功能也是比较强大,比较简单,但是,非常遗憾的是

缺点:付费使用(可免费受限使用,如访问次数、广告显示等)。

如果我们仅仅是用外部的应用来打开Office文档,其实也很简单,就在前几天项目中,产品定了一个需求,要支持阅读pdf文件,具体规则没定,索性我就直接用app外的应用打开,具体代码如下:

/**
  * 打开pdf
  * pdf:PDF url
  * name:pdf文件的名字
  */
public void startPdfActivity(String pdf, String name) {
     String terPath = getSDPath() + "/trader/" + name;
     File file = new File(terPath);
     if (file.exists()) {
         Intent intent = getPdfFileIntent(terPath);
         context.startActivity(intent);
     } else {
         downLoadPdf(pdf, name);
     }

 }
public Intent getPdfFileIntent(String path) {
     //启动android默认浏览器
     Intent i = new Intent(Intent.ACTION_VIEW);
     i.addCategory(Intent.CATEGORY_DEFAULT);
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     Uri uri = Uri.fromFile(new File(path));
     i.setDataAndType(uri, "application/pdf");
     return i;
}

虽然简单的实现了,但随之潜在的bug,也暴漏出来了,就是有些手机里面没有可以打开pdf格式文件的应用,说不定哪个用户就发生了这种情况,那么这就比较尴尬了。

为了解决上述的尴尬,只有借助第三方的sdk了,没有办法,谁让Android不直接支持呢,我的建议仍然是,不得已的情况下我们才要进行依赖第三方,一旦引入了第三方,除了增加了APK的大小,毕竟一些第三方的局限性和稳定性也是我们不可估量的。

给大家推荐几个免费的:

MuPDF:

地址:http://mupdf.com

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

PdfiumAndroid:

地址:https://github.com/barteksc/PdfiumAndroid

AndroidPdfViewer:

地址:https://github.com/barteksc/AndroidPdfViewer

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

pdfium:

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

地址:https://android.googlesource.com/platform/external/pdfium/

除了免费的之外,还有一些付费的,付费的呢用起来就稍微的比较简单。

Foxit PDF SDK

地址:http://www.foxitsoftware.cn/products/sdk/PDFsdk/android/

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

plugPDF

地址:https://plugpdf.com

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

具体使用方式,网上太多太多,如果你真的用到的话,想必你总会找到。