Android实现pdf在线预览或本地预览的方法

 更新时间:2018年01月17日 10:05:35   作者:Kiven_Android  
下面小编就为大家分享一篇Android实现pdf在线预览或本地预览的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

最近项目中需要使用在线预览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 Handler消息传递机制

    Android Handler消息传递机制

    Handler是一套 Android 消息传递机制,主要用于线程间通信。用最简单的话描述: handler其实就是主线程在起了一个子线程,子线程运行并生成Message,Looper获取message并传递给Handler,Handler逐个获取子线程中的Message
    2022-12-12
  • Flutter 自定义Drawer 滑出位置的大小实例代码详解

    Flutter 自定义Drawer 滑出位置的大小实例代码详解

    这篇文章主要介绍了Flutter 自定义Drawer 滑出位置的大小,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Android 沉浸式改变小米魅族状态栏颜色的实例代码

    Android 沉浸式改变小米魅族状态栏颜色的实例代码

    这篇文章主要介绍了Android 沉浸式改变小米魅族状态栏颜色的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • 详解Android短信的发送和广播接收实现短信的监听

    详解Android短信的发送和广播接收实现短信的监听

    本篇文章主要介绍了Android短信的发送和广播接收实现短信的监听,可以实现短信收发,有兴趣的可以了解一下。
    2016-11-11
  • Android简单自定义音乐波动特效图

    Android简单自定义音乐波动特效图

    这篇文章主要为大家详细介绍了Android简单自定义音乐波动特效图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • android 实现控件左右或上下抖动教程

    android 实现控件左右或上下抖动教程

    这篇文章主要介绍了android 实现控件左右或上下抖动教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android获取手机文件夹及文件列表的方法

    Android获取手机文件夹及文件列表的方法

    这篇文章主要为大家详细介绍了Android获取手机文件夹及文件列表的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android view绘制流程详解

    Android view绘制流程详解

    View 的绘制是在 ViewRoot 的 performTraversals() 开始的,它历经 measure(测量), layout(布局), draw(绘制) 三个流程将 View 显示在屏幕上。
    2021-05-05
  • 如何在Flutter中嵌套Android布局

    如何在Flutter中嵌套Android布局

    通常Flutter与Android页面交互是各自独占整个手机屏幕,但有些情况下无法满足需求,有些时候Flutter中没有提供相关插件或者插件不满足需求,这时候就需要开发者自定义插件,开发者可以参考本文中的方法去进行自定义。
    2021-06-06
  • Suspend函数与回调的互相转换示例详解

    Suspend函数与回调的互相转换示例详解

    这篇文章主要为大家介绍了Suspend函数与回调的互相转换示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论