Android实现pdf在线预览或本地预览的⽅法最近项⽬中需要使⽤在线预览pdf,并要能实现⾃动播放,我想这样的需求⽆论如何来说都是很的
由于本⼈⽔平有限,最后讨论将项⽬需求改成将pdf下载到本地再实现⾃动播放。
接下来总结下⽬前能够实现pdf阅读的⽅案,开发当中需要根据实际需求去选择相应的⽅案。
1.使⽤Google doc⽀持来展⽰word,excel,pdf,txt(WebView⽅式在线预览):
<span >WebView urlWebView = (WebView)findViewById(ainWebView);
urlWebView.setWebViewClient(new AppWebViewClients());
urlWebView.loadUrl("le/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
}
}</span>
优点:使⽤简单,⽆需服务器和客户端的额外部署⼯作。
缺点:国内需要访问。
<span >引⼊:compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'</span>
<span > <com.joanzapata.pdfview.PDFView
android:id="@+id/pdfview"
android:layout_width="match_parent"
android:layout_height="match_parent"/></span>
<span > pdfView = (PDFView) findViewById(R.id.pdfview);
//加载assets下的⽂件
pdfView.fromAsset("sample.pdf")
//.fromFile("")指定加载某个⽂件
//指定加载某⼀页安卓intent用法
/*.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 访问⽅式,⼀个固定格
优点:功能强⼤,使⽤简单。
缺点:付费使⽤(可免费受限使⽤,如访问次数、⼴告显⽰等)。
4.打开本地应⽤
如果移动设备中安装有能够打开 Office ⽂档的本地应⽤,也可以借助它们打开所要操作的⽂档,
当然前提是必须先将远程⽂档下载到设备的本地存储空间中:
<span >Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//officeFile:本地⽂档;type:⽂档MIMEType类型,可以使⽤⽂件格式后缀
intent.setDataAndType(Uri.fromFile(officeFile), type);
if (solveActivity(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在线预览或本地预览的⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论