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 如何本地加载pdf文件
  • Android实现本地图片选择及预览缩放效果
  • Android 打开本地pdf文件
(0)

相关推荐

  • Android 如何本地加载pdf文件

    大部分app打开pdf文件是通过intent调起手机中能打开pdf文件的工具,来查看pdf文件,如果需求是,用户在app内下载好pdf文件后,不通过第三方的工具,本地打开. 这样的需求要怎么实现呢?上网查了一些资料,发现了一个很好用PDF开源库. 使用起来也很简单,首先添加PDFView的引用 compile 'com.github.barteksc:android-pdf-viewer:2.4.0' 布局中引用PdfView <LinearLayout xmlns:android="ht

  • Android 打开本地pdf文件

    Android 中打开pdf文件也是一种很常见的场景,但是上网找了好多资料,有用WebView加载的,但是要用vpn才能搞,最后发现一个库挺不错的,再次分享给大家 android-pdfview.下面主要说一下该库的使用方法. 1. 该库的下载地址 https://github.com/JoanZapata/android-pdfview 源码下载:http://xiazai.jb51.net/201704/yuanma/android-pdfview-master_jb51.rar 2. an

  • Android实现本地图片选择及预览缩放效果

    在做项目时经常会遇到选择本地图片的需求,以前都是懒得写直接调用系统方法来选择图片,但是这样并不能实现多选效果,最近又遇到了,所以还是写一个demo好了,以后也方便使用.还是首先来看看效果: 显示的图片使用RecyclerView实现的,利用Glide来加载:下面弹出的图片文件夹效果是采用PopupWindow实现,这里比采用PopupWindow更方便,弹出显示的左边图片是这个文件夹里的第一张图片:选中的图片可以进行预览,使用网上一个大神写的来实现的:至于图片的获取是用ContentProvid

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

    最近项目中需要使用在线预览pdf,并要能实现自动播放,我想这样的需求无论如何来说都是很操蛋的 由于本人水平有限,最后讨论将项目需求改成将pdf下载到本地再实现自动播放. 接下来总结下目前能够实现pdf阅读的方案,开发当中需要根据实际需求去选择相应的方案. 1.使用Google doc支持来展示word,excel,pdf,txt(WebView方式在线预览): <span style="font-size:18px;">WebView urlWebView = (WebVi

  • Android开发实现在Wifi下获取本地IP地址的方法

    本文实例讲述了Android开发实现在Wifi下获取本地IP地址的方法.分享给大家供大家参考,具体如下: 代码核心介绍: WifiManager类提供了对设备Wifi功能的管理,包括Wifi开关的打开和关闭,IP地址获取等等,早期的Android版本甚至支持对于IP的设置.在这里仅介绍其简单的一个小应用--获取IP地址. 首先先添加Uses-Permission:CHANGE_WIFI_STATE,WAKE_LOCK和ACCESS_WIFI_STATE.代码如下(AndroidManifest.

  • Android 使用PDF.js浏览pdf的方法示例

    Android的WebView做不到ios的WebView那样可以很方便的直接预览pdf文件.要实现利用WebView预览pdf我们可以使用谷歌文档服务: mWebView.loadUrl("http://docs.google.com/gviewembedded=true&url=" + pdfUrl); 这种方式国内网络环境是不用考虑的.当然也有替代的方案:我们可以使用mozilla开源的PDF.js. Github mozilla 官方demo 一 WebView设置:

  • vue 使用 vue-pdf 实现pdf在线预览的示例代码

    背景 之前的demo增加了图片预览,于是今天下午追完番剧就突然想到能不能把pdf在线预览也做了,说干就干,刚开始查了很多教程,我发现很多人都在说什么pdf.js这个库,这当然没什么问题,pdf.js的确可以非常完美的实现pdf在线预览的过程,但是感觉这样直接进去有点不太优雅,于是找找看看有没有什么现成的组件,发现有vue-pdf这个组件,虽然说它没有原生那样强大,比如不支持pdf文字复制,打印会乱码,但是我感觉已经足以满足我的需求了.本篇笔记循序渐进,从基础的demo,到一个可用的程度,文末列出

  • Java实现PDF在线预览功能(四种方式)

    目录 Java实现PDF在线预览 Java快捷实现PDF在线预览 Java实现PDF在线预览 @RequestMapping("/preview1") public void er(HttpServletResponse response){ File file = new File("G:\\桌面\\Thymeleaf3.0中文翻译文档@www.java1234.com.pdf"); if (file.exists()){ byte[] data = null;

  • Android实现PDF预览打印功能

    最近在做一个项目,需要用到android手机连接打印机进行打印的功能,目前在网上找到的教程介绍的都是蓝牙连接热敏打印机(pos机大小的打印机)和蓝牙打印机,如果连接日常所见到的网络打印机,进行打印,很显然这些教程是做不到的. 由于android没有提供任何标准,都是自家封的API,参考了WPS的APP的打印功能,决定按照WPS的方案来写,需要安装打印服务插件,比如PrinterShare以及三星.HP提供的自家打印服务插件. 一.连接打印管理者 当程序需要直接管理打印进程时,在收到用户的打印请求

  • JS实现的input选择图片本地预览功能示例

    本文实例讲述了JS实现的input选择图片本地预览功能.分享给大家供大家参考,具体如下: 预览效果见下图: HTML代码如下: <div class="content" style="margin-top:100px;height:200px;"> <div id="div4bm" style="float:left;"> <!--input[button] 触发 file click事件--&g

  • 原生js FileReader对象实现图片上传本地预览效果

    本文实例为大家分享了js实现图片上传本地预览效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta

  • 基于jquery实现图片上传本地预览功能

    当我们在上传文件时如果每次都要上传到服务器才可以预览这个做看上合理其实是不合理的,如果网速慢或图片有问题,这样不但浪费客户时间同时也浪费服务器资源了,下面我们介绍利用js上传图片时本地实现预览,希望此方法对各位有所帮助哦. 一.原理 分为两步: 当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL): 把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来. 在这里,我们需要了解Javascript里File对象.Blob对象和window.U

  • jQuery实现本地预览上传图片功能

    本文实例介绍了基于JQUERY扩展,图片上传预览插件,目前兼容浏览器(IE 谷歌 火狐) 不支持safari,分享给大家供大家参考,具体内容如下 HTML代码: <html> <head> <title>图片上传预览演示</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javas

随机推荐