最近项目中需要使用在线预览pdf,并要能实现自动播放,我想这样的需求无论如何来说都是很操蛋的
由于本人水平有限,最后讨论将项目需求改成将pdf下载到本地再实现自动播放。
接下来总结下目前能够实现pdf阅读的方案,开发当中需要根据实际需求去选择相应的方案。
1.使用Google doc支持来展示word,excel,pdf,txt(WebView方式在线预览):
<span style="font-size:18px;">WebView urlWebView = (WebView)findViewById(R.id.containWebView); urlWebView.setWebViewClient(new AppWebViewClients()); urlWebView.getSettings().setJavaScriptEnabled(true); urlWebView.getSettings().setUseWideViewPort(true); urlWebView.loadUrl("http://docs.google.com/gview?embedded=true&url=" + "YOUR_DOC_URL_HERE"); public class AppWebViewClients extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); } }</span>
https://docs.google.com/gview?embedded=true&url=文档地址
优点:使用简单,无需服务器和客户端的额外部署工作。
缺点:国内需要翻墙访问。
2.github开源项目:https://github.com/JoanZapata/android-pdfview:
<span style="font-size:18px;">引入:compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'</span>
<span style="font-size:18px;"> <com.joanzapata.pdfview.PDFView android:id="@+id/pdfview" android:layout_width="match_parent" android:layout_height="match_parent"/></span>
<span style="font-size:18px;"> pdfView = (PDFView) findViewById(R.id.pdfview); //加载assets下的文件 pdfView.fromAsset("sample.pdf") //.fromFile("")指定加载某个文件 //指定加载某一页 /*.pages(0, 1,2, 3, 4, 5)*/ .defaultPage(1) .showMinimap(false) .enableSwipe(true) /* .onDraw(onDraw) .onLoad(onLoadCompleteListener) .onPageChange(onPageChangeListener)*/ .load();</span>
里面有很多方法,可以去看PDFView的源码。
3.Office Web 365(WebView方式在线预览,具体用法同1)
第三方公司提供的一种 Office 文档在线预览的功能,能够实现 Microsoft、Adobe、WPS
文档的移动端和PC端在线网页访问。使用简单,类似 Google Doc 访问方式,一个固定格
式的链接,轻松实现:http://ow365.cn/?i=您的网站ID&furl=文档地址
优点:功能强大,使用简单。
缺点:付费使用(可免费受限使用,如访问次数、广告显示等)。
4.打开本地应用
如果移动设备中安装有能够打开 Office 文档的本地应用,也可以借助它们打开所要操作的文档,
当然前提是必须先将远程文档下载到设备的本地存储空间中:
<span style="font-size:18px;">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); }</span>
优点:可读可写。
缺点:需要先行下载,同时设备中存在能够打开文档的本地应用,并且阅读时会离开当前应用。
5.第三方 SDK
网上有一些免费开源的解析源码和第三方公司提供的付费 SDK,将其嵌入自己的项目中,便能使用其中的功能操作 Office 文档。这种方式的缺点也显而易见,最直接的就是大大增加了 APK 安装文件的大小。免费的开源项目,存在一些局限性和不稳定性,操作繁琐;付费 SDK ,使用起来相对较为简单。
免费开源:
pdfium-----Google 的开源项目,也是 Chrome 浏览器的PDF渲染引擎,初始代码来自国内知名PDF技术公司「福昕」。
AndroidPdfViewer(上面的方法2)
PdfiumAndroid-----基于 pdfium 的两个 Android 平台实现方式,支持 PDF 文档的应用内预览,支持动画、缩放、手势和双击操作。
MuPDF------一个轻量级的 开源 PDF 和 XPS 查看器。
付费SDK:
Foxit PDF SDK-----福昕出品,性能稳定,功能强大,支持 PDF 的显示、导航、创建、搜索、
注释、保护、PDF文本提取、图片转换、表单数据收集和编辑等功能。
plugPDF-----来自国外的一个付费 SDK,使用简单,只需三步即可集成到自己的应用中并使用。
6.服务器端解析
需要在服务器端完成 Office 文档的解析工作,通过一些技术手段将文档转换为 Html 文件或者图片,然后再在客户端通过 WebView 加载显示。
PDF.js:「 mozilla 」开源的一种JS解决方案,提供了服务器和客户端两种集成方式。
pdf2htmlEX:类似 PDF.js ,在服务器端集成,利用 Web技术完成 Office 文档的解析工作。
总结:
总体来说,在 Android 平台上实现 Office 文档的预览和编辑功能,属于一个较为棘手的问题,需要结合实际产品需求和开发成本、稳定性等多方面考虑。当然,如果不是硬需求,最好不要随意集成开源 SDK,毕竟研发成本过高,同时稳定性不见得如你所想。
以上这篇Android实现pdf在线预览或本地预览的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍Android实现PDF预览打印功能,包括了Android实现PDF预览打印功能的使用技巧和注意事项,需要的朋友参考一下 最近在做一个项目,需要用到android手机连接打印机进行打印的功能,目前在网上找到的教程介绍的都是蓝牙连接热敏打印机(pos机大小的打印机)和蓝牙打印机,如果连接日常所见到的网络打印机,进行打印,很显然这些教程是做不到的。 由于android没有提供任何标准,都
本文向大家介绍vue实现pdf文档在线预览功能,包括了vue实现pdf文档在线预览功能的使用技巧和注意事项,需要的朋友参考一下 针对android系统不支持pdf文档在线预览,可通过引入pdf.js插件实现,其具体实现步骤如下 一、引入插件 方式一:npm install --save pdfjs-dist,安装完成后在vue项目的node_modules出现如下依赖 方式二:只引入pdf.js的
本文向大家介绍纯JS实现本地图片预览的方法,包括了纯JS实现本地图片预览的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了纯JS实现本地图片预览的方法。分享给大家供大家参考。具体如下: 刚突然看到,网上已经有很多类似的代码,但没找到一个合适的。就拿自己以前写的写了一个。代码比较简洁,引用了一个我之前写的js.方法可以单独剥离出来使用,未测太多兼容。本机浏览器基本都支持(IE,FF,Ch
本文向大家介绍vue实现在线预览pdf文件和下载(pdf.js),包括了vue实现在线预览pdf文件和下载(pdf.js)的使用技巧和注意事项,需要的朋友参考一下 最近做项目遇到在线预览和下载pdf文件,试了多种pdf插件,例如jquery.media.js(ie无法直接浏览) 最后选择了pdf.js插件(兼容ie10及以上、谷歌、安卓,苹果) 强烈推荐改插件,以下介绍用法 (1)下载插件 下载路
本文向大家介绍浅谈实现在线预览PDF的几种解决办法,包括了浅谈实现在线预览PDF的几种解决办法的使用技巧和注意事项,需要的朋友参考一下 因客户需要实现PDF的预览处理,在网上找了一些PDF在线预览的解决方案,有的用PDFJS的在线预览方式,有的使用PDFObject的嵌入式显示,有的通过转换JPG/PNG方式实现间接显示的方式,开始是想通过简单的方式,能够使用JS插件实现预览最好,可是在线预览总是
本文向大家介绍js本地图片预览实现代码,包括了js本地图片预览实现代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js本地图片预览实例,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。