Android 打开本地pdf文件,android 加载pdf文件

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/huningjun/article/details/79235580

android 中打开pdf文件也是一种很常见的场景,但是上网找了好多资料,有用webview加载的,但是要用vpn才能搞,最后发现一个库挺不错的,再次分享给大家

        android-pdfview。下面主要说一下该库的使用方法。

        1. 该库的下载地址

        https://github.com/joanzapata/android-pdfview (android studio)

        源码下载:http://download.csdn.net/download/huningjun/10236321(eclipse)

        2. android-pdfview的简单介绍

        pdfview是这个库中最核心的类,用于加载pdf文件,pdfview是的实现是继承于surfaceview来实现的。主要用到了建造者模式来设置相关的属性。

[Java] 查看源文件 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
fromfile(file) //设置pdf文件地址
fromasset(assetfilename) //设置pdf文件地址
defaultpage(1) //设置默认显示第1页
onpagechange(this) //设置翻页监听
onload(this) //设置加载监听
ondraw(this) //绘图监听
showminimap(false) //pdf放大的时候,是否在屏幕的右上角生成小地图
swipevertical( false ) //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
enableswipe(true) //是否允许翻页,默认是允许翻页
pages() //把2 , 3 , 4 , 5 过滤掉
load();

        3. 在项目的build.gradle添加这个依赖

        compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'

        4.写一个布局文件

[Java] 查看源文件 复制代码
?
1
<

        5.activity的实现

[Java] 查看源文件 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.lidong.pdf.androidpdf;
 
import android.graphics.canvas;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.view.viewtreeobserver;
import android.widget.toast;
 
import com.joanzapata.pdfview.pdfview;
import com.joanzapata.pdfview.listener.ondrawlistener;
import com.joanzapata.pdfview.listener.onloadcompletelistener;
import com.joanzapata.pdfview.listener.onpagechangelistener;
 
import java.io.file;
 
public class mainactivity extends appcompatactivity implements onpagechangelistener
 ,onloadcompletelistener, ondrawlistener {
 private pdfview pdfview ;
 
 @override
 protected void oncreate(bundle savedinstancestate) {
 super.oncreate(savedinstancestate);
 setcontentview(r.layout.activity_main);
 
 pdfview = (pdfview) findviewbyid( r.id.pdfview );
 
 //从assets目录读取pdf
 displayfromassets("0010000022464002f__李东.pdf");
 
 //从文件中读取pdf
// displayfromfile( new file( "filename"));
 
 }
 
 private void displayfromassets(string assetfilename ) {
 pdfview.fromasset(assetfilename) //设置pdf文件地址
  .defaultpage(1//设置默认显示第1页
  .onpagechange(this) //设置翻页监听
  .onload(this//设置加载监听
  .ondraw(this//绘图监听
  .showminimap(false) //pdf放大的时候,是否在屏幕的右上角生成小地图
  .swipevertical( false ) //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
  .enableswipe(true) //是否允许翻页,默认是允许翻页
//   .pages() //把 5 过滤掉
  .load();
 }
 
 private void displayfromfile( file file ) {
 pdfview.fromfile(file) //设置pdf文件地址
  .defaultpage(6//设置默认显示第1页
  .onpagechange(this) //设置翻页监听
  .onload(this//设置加载监听
  .ondraw(this//绘图监听
  .showminimap(false) //pdf放大的时候,是否在屏幕的右上角生成小地图
  .swipevertical( false ) //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
  .enableswipe(true) //是否允许翻页,默认是允许翻
  // .pages( 2 ,5 ) //把2 5 过滤掉
  .load();
 }
 
 /**
 * 翻页回调
 * @param page
 * @param pagecount
 */
 @override
 public void onpagechanged(int page, int pagecount) {
 toast.maketext( mainactivity.this , "page= " + page +
  " pagecount= " + pagecount , toast.length_short).show();
 }
 
 /**
 * 加载完成回调
 * @param nbpages 总共的页数
 */
 @override
 public void loadcomplete(int nbpages) {
 toast.maketext( mainactivity.this , "加载完成" + nbpages , toast.length_short).show();
 }
 
 @override
 public void onlayerdrawn(canvas canvas, float pagewidth, float pageheight, int displayedpage) {
 // toast.maketext( mainactivity.this , "pagewidth= " + pagewidth + "
 // pageheight= " + pageheight + " displayedpage=" + displayedpage , toast.length_short).show();
 }
}

        效果实现:

        

        

       

展开阅读全文

没有更多推荐了,返回首页