Android实现文档在线预览功能
前段时间,项目中有个需求是实现文档预览的功能,Android要实现该功能要比IOS复杂的多,下面就我调研的情况,总结一下,供大家参考:
一、WebView 网页显示
该方式类似于ios的实现方式,使用 WebView 加载网络文件的 Url 地址即可显示。
1、Google Doc
类似 iOS ,Google 也提供了一种在线文档解析的功能,只需要按照固定的格式将远程文档的 Url 地址传给 Google 服务器,即可利用 WebView 控件加载新的 Url 地址,显示即可。WebView 加载的 Url 地址格式如下:
https://docs.google.com/gview?embedded=true&url=文档地址
但该方法在国内由于无法使用谷歌服务,所以在国内无法使用
2、Office Web 365
第三方公司提供的一种 Office 文档在线预览的功能,能够实现 Microsoft、Adobe、WPS 文档的移动端和PC端在线网页访问,
固定格式的链接:
http://ow365.cn/?i=您的网站ID&furl=文档地址
如:http://ow365.cn/?i=1&furl=http://a.com/downfile/a.doc
其收费标准如下:
3、永中DCS文档在线预览
类似「Office Web 365」提供的服务,都是通过先在个人管理中心添加远程文档域名,结合文档地址,组合成一个新的 Url 访问地址,然后便可以在 PC 和 手机端实现在线预览,Url 格式为:
http:// api网址+?k=(域名对应的用户Key)+ & url =(在线文档地址)
其收费标准如下:
总结:这两种方式完全依赖于第三方云服务,好处是提供一个url地址,可以同时实现手机端和PC端在线预览文档的需求,而且集成也比较简单。
二、打开本地应用
如果移动设备中安装有能够打开 Office 文档的本地应用,则可以借助这些应用打开所要操作的文档,但必须先将远程文档下载到设备的本地存储空间中。
intent打开文件代码:
Intent intent = new Intent(ACTION_VIEW);intent.addCategory(CATEGORY_DEFAULT);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);Uri uri=getUriForFile(file);String mimeType=getMimeType(uri);intent.setDataAndType(uri, mimeType);startActivity(Intent.createChooser(intent, "打开"));
三、第三方SDK
1、pdf开源库:
- AndroidPdfViewer、PdfiumAndroid:基于 pdfium 的两个 Android 平台实现方式,支持 PDF 文档的应用内预览,支持动画、缩放、手势和双击操作。只支持pdf文档的预览,并且需要先下载到本地。
- MuPDF:一个轻量级的 开源 PDF,也是只支持pdf格式的文档,需要文件先下载到本地。
- Foxit PDF SDK:它是福昕出品的、收费的sdk,支持 PDF 的显示、导航、创建、搜索、注释、保护、PDF文本提取、图片转换、表单数据收集和编辑等功能
由于这些支持的文档格式都是只支持pdf,所以其实现时需要后台统一转换为pdf的文档格式,然后安卓端只预览这一种格式文档。例如:
后台可利用openoffice + jodconverter将office文档转换为pdf格式。这种方式
需要在服务器上安装openoffice,文档页数多的话转换速度很慢(页数少的话速度在可以接受的范围之内,转换速度与文档大小关系不大,主要是文档页数)。然后Android端可用如AndroidPdfViewe第三方开源sdk预览这些文档,预览的时候需要先下载到本地。
2、利用相关技术一端完成文档转换
- 服务端转换文档:在服务端把office文档转化为html,pdf转化为图片,Android端直接用webview加载网址就可以,该种主要看服务端这种好实现不。
- 在安卓端完成文档转换:使用Poi将doc、docx、xls、xlsx文档转换为html,再使用webview加载本地html。使用Apache的Poi组件,但是由于ppt在转换过程中需要用到java的awt,所以无法实现ppt的转换,也就是说只能实现word、excle的转换。
3、使用腾讯浏览服务(TBS)
依托 X5 内核强大的能力,可以实现应用内的文件浏览功能、视频播放功能等。直接集成官方提供的SDK包,集成实现即可。该种实现还是需要把文档提前下载到本地。
注:TBS是依托X5内核的,当手机中没有X5内核的产品(如:微信、QQ、QQ浏览器)时,就无法加载相关文档
实例代码如下:
导入库:
implementation 'com.tencent.tbs.tbssdk:sdk:43903'
private void displayFile(File file) {Bundle bundle = new Bundle();bundle.putString("filePath", file.getAbsolutePath());File tempPath = new File(getExternalCacheDir().getAbsolutePath(),"tempPath/"+file.getName());if (!tempPath.getParentFile().exists()) {tempPath.mkdirs();}bundle.putString("tempPath", tempPath.getAbsolutePath());boolean result = mTbsReaderView.preOpen(getFileType(file.getAbsolutePath()), false);if (result) {mTbsReaderView.openFile(bundle);}}
Android实现文档在线预览功能相关推荐
- 前端【vue】实现文档在线预览功能,在线预览pdf、word、xls、ppt等office文件
前端江太公 前端实现文档在线预览功能 最直接的就是使用XDOC 文档云服务 XDOC可以实现预览以DataURI表示的DOC文档,此外XDOC还可以实现文本.带参数文本.html文本.json文本.公 ...
- office 文档 在线预览功能实现(word,excel,pdf,ppt等多种格式)——使用https://view.xdocin.com/view 提示文档过期——基础积累
web实现office文档在线预览功能--基础积累 最近遇到一个需求,就是要实现多种文档链接的在线预览,最简单的方式就是通过window.open(url地址)的方式来实现. 但是如果要求是在一个弹窗 ...
- 【Vue实用功能】Vue实现文档在线预览功能,在线预览PDF、Word、Excel、ppt等office文件
文章目录 @[TOC](文章目录) 方法一. Luckysheet 预览 方法二. Office Web 查看器(微软的开发接口) 方法三. XDOC文档预览云服务(预览pdf.word.xls.pp ...
- Java 实现文档在线预览功能
一.说明 因系统需要,要在系统中做一个文档预览的功能,网上有挺多第三方的工具,但是都是收费的,有 什么永中啊,OFFICE 365 XDOC啊,这些大概一搜都能搜到,价格也不是很贵. 但是,能不付费就 ...
- wps在线预览接口_WPS文档在线预览接入的一点心得
花了大半天时间接入WPS文档在线预览功能,还算比较顺利. 原来的OA系统一直用到文档在线预览功能,之前是用微软+officeweb365来实现的.一直感觉不太理想.昨天无意间见到金山WPS开放了在线文 ...
- 如何实现文档在线预览
从事软件开发已经有快5个年头了.在我经历过的每一家公司都避免不了有需要做文档在线预览的功能.那么客户为什么需要文档在线预览的功能呢?可能包括以下几点, 1.开发的系统支持文件可下载,那么客户肯定会再次 ...
- 用JAVA实现word文档在线预览的功能
预览Word.PPT.Excel 我之前发过一篇文章,是介绍office预览和编辑的但是大部门插件都是收费的,我这次提供的是免费的一个将Word.PPT.Excel转换为PDF然后在浏览器进行预览,之 ...
- Office文档在线预览接口服务器
现在的Office文档在线预览基本都是收费的,但这个功能几乎在所有软件系统中都会有这个需求,微软有一个Office online是免费的,但是安装跟配置非常复杂,可以说用难度5颗星来形容,有没有一个更 ...
- 文档在线预览产品系列-解决方案篇
文档在线预览产品系列-解决方案篇 hello 大家好,我又来了,上次我们聊到文档在线预览市场的产品类别有很多,今天我们就来盘点下各个类别以及对应的一些产品品牌. 产品类别 开源项目 开源项目是啥就不多 ...
最新文章
- 色诱社报道:昨日,腾讯公司公布了2009年发展策划
- What you need to know about AllowUnsafeUpdates (Part 1) [转载]
- python模拟地面网管接收数据
- php表单时间转换为时间戳-175
- 【每周CV论文推荐】 初学深度学习人脸识别和验证必读文章
- Ubuntu 软件包管理详解
- mysql索引篇之覆盖索引、联合索引、索引下推
- grunt 插件_从Grunt测试Grunt插件
- linux脚本done报错,很简单的脚本程序,总是报错
- 共享计算机脱机访问计算机,让Windows7脱机共享访问更安全 -电脑资料
- 第一届“百度杯”信息安全攻防总决赛 find the flag WP
- 推荐一个腾讯大神的免费直播课!
- nrm —— 快速切换 NPM 源
- 清北级别,补助丰厚,这样的中科院信工所你心动了吗?
- Windows10设置暗色主题
- 在unik中,写一个Go HTTP服务器
- edge浏览器字体模糊乱码怎么办
- m1Mac上下载安装并运行gprMax中几个错误的解决方法
- 杭电 hdu 1720
- Java帝国之宫廷内斗(2)