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

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();
  }
}

        效果实现:

        

        

       

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页