欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 打开本地pdf文件

程序员文章站 2024-02-05 16:50:04
android 中打开pdf文件也是一种很常见的场景,但是上网找了好多资料,有用webview加载的,但是要用vpn才能搞,最后发现一个库挺不错的,再次分享给大家 and...

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

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

1. 该库的下载地址

https://github.com/joanzapata/android-pdfview

源码下载:

2. android-pdfview的简单介绍

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

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.写一个布局文件

<?xml version="1.0" encoding="utf-8"?>
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
tools:context="com.lidong.pdf.androidpdf.mainactivity">
 <com.joanzapata.pdfview.pdfview
 android:id="@+id/pdfview"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 />
</relativelayout>

5.activity的实现

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

效果实现:

Android 打开本地pdf文件

Android 打开本地pdf文件

今天主要是简单使用一下,后面准备将该库进行拓展,是打开网络的pdf文件的功能。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!