Android加载PDF文件,webview没有直接提供相关的API方法,不像IOS webview可以直接加载PDF文件,不管本地文件或者在线文件,而Android 的webview却不能加载,那么就需要借助第三方或者其他解决方案来实现加载PDF。
我总结了一下几种,供为参考。
1.通过WebView直接调用Google的GoogleDocs服务。
这种方式是最简单的,Google服务器会把你所要加载的PDF文件直接转换成HTML网页供webview加载预览
String pdfUrl="小胖";
mWebView.loadUrl("http://docs.google.com/gview?embedded=true&url="+ pdfUrl);
但是,众所周知,咱们家里有一堵墙,Google的服务需要翻墙才能使用,所以最简单的反而不能用,很蛋疼,总不能让用户的手机装VPN吧。
2.借助第三方类库实现加载PDF文件
Android第三方实现加载PDF文件的开源项目有很多,但是稳定性还有待考证,或多或少都有点问题 但是相对来讲, AndroidPdfView这个还算是比较成熟的,功能强大,唯一不好的缺点就是,依赖库可能会很大,如果不能忍受APK安装包增大很多的话,或者PDF不是项目中的重要业务,建议不考虑。
使用方法:
String pdfUri = "file:///android_asset/xiaojiejie.pdf"
pdfView.fromAsset(pdfUri)//加载assets文件下的PDF文件,也可是SD下的PDF等
.enableSwipe(true)//是否允许翻页,默认是允许翻页
.spacing(5)//每页间距 dp
.defaultPage(0)//默认显示第几页
.swipeHorizontal(false)// true 水平翻页 false 垂直翻页
.enableAntialiasing(true)// 改善低分辨率屏幕上的渲染
.enableDoubletap(true)//允许双击缩放
.enableAnnotationRendering(true)//显示注解
.onLoad(new OnLoadCompleteListener() {//加载监听
@Override
public void loadComplete(int nbPages) {
Toast.makeText(PDFActivity.this, "加载完成", Toast.LENGTH_SHORT).show();
}
})
.onError(new OnErrorListener() {//异常监听
@Override
public void onError(Throwable t) {
Toast.makeText(PDFActivity.this, "加载错误", Toast.LENGTH_SHORT).show();
}
})
.onPageChange(new OnPageChangeListener() {//翻页监听
@Override
public void onPageChanged(int page, int pageCount) {
Toast.makeText(PDFActivity.this, (page + 1) + "/" + pageCount, Toast.LENGTH_SHORT).show();
}