Android 打开本地pdf文件

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

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

1. 该库的下载地址

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

源码下载:http://xiazai.jb51.net/201704/yuanma/android-pdfview-master_jb51.rar

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

效果实现:

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

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

(0)

相关推荐

  • Android 打开网络上pdf文件

    之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件.今天终于可以兑现承诺了.frok一份代码https://github.com/JoanZapata/android-pdfview,源码地址:http://xiazai.jb51.net/201704/yuanma/android-pdfview-master_jb51.rar,开始改造一番. 1.基本思路: 打开网络pdf 思路整体还是来源与图片的加载. android中加载

  • Android pdf viewer在android studio应用问题说明详解

    之前一直是做.NET开发的,最近需要弄一个新闻app,能力有限,只能借助HTML5 WebAPP+android studio来完成这项工作. android studio主要用WebView来加载发布好的WebApp,打包生产APP. 其中由于显示一些pdf文档,所以研究了一下,记录一下心得,同时也希望帮助到新手们. android 显示网络pdf,基本原理:先将pdf文件通过DownloadManager下载到手机sdk某个文件夹中,然后通过android-pdf-viewer插件进行显示.

  • Android 下载并打开PDF,Doc,Dwg文档实例

    今天项目中遇到这样一个需求 ,根据后台接口里pdf,doc,dwg文档的地址 是一个URL ,需要根据文档的url 下载到本地(内部存储或内存卡)并用手机中能打开该文档的软件弹出来并打开,(这里需要做一个缓存,第一次查看这个文档是在服务器上下载并打开,以后打开不需要下载直接打开本地的文档)在网上找了些资料 写了以下代码,下面分享给大家; 效果图: 代码: 这是一个单独的类 首先接收intent传过来的url我是用url的后14位作为存储本地的文件名(这里根据自己服务器的文件命名规则而定) 拿到文

  • Android 打开本地pdf文件

    Android 中打开pdf文件也是一种很常见的场景,但是上网找了好多资料,有用WebView加载的,但是要用vpn才能搞,最后发现一个库挺不错的,再次分享给大家 android-pdfview.下面主要说一下该库的使用方法. 1. 该库的下载地址 https://github.com/JoanZapata/android-pdfview 源码下载:http://xiazai.jb51.net/201704/yuanma/android-pdfview-master_jb51.rar 2. an

  • Android编程实现使用webView打开本地html文件的方法

    本文实例讲述了Android编程实现使用webView打开本地html文件的方法.分享给大家供大家参考,具体如下: 在布局的配置文件里: <WebView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/webView"> </WebView> 后台java代码; @SuppressLint(

  • android打开本地图像的方法

    本文实例讲述了android打开本地图像的方法.分享给大家供大家参考.具体如下: 方法一,调用手机安装的图像浏览工具浏览: Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, 1); 方法二,调用手机自身图像浏览工具浏览: Intent intent = new Intent

  • Android读取本地json文件的方法(解决显示乱码问题)

    本文实例讲述了Android读取本地json文件的方法.分享给大家供大家参考,具体如下: 1.读取本地JSON ,但是显示汉字乱码 public static String readLocalJson(Context context, String fileName){ String jsonString=""; String resultString=""; try { BufferedReader bufferedReader=new BufferedReade

  • Android扫描本地音乐文件开发案例分享

    一.前言 本来觉得so easy,真是没想到,还搞了老半天,搞的我大汗淋漓,要拍桌子摔键盘了. 本想实现的功能是: 通过网易云音乐/百度音乐/QQ音乐/酷狗音乐中一个API,通过关键词/歌手/歌词来搜索相关歌曲信息,然后在线播放.下载到本地,不过目前来看,使用API还是有一点问题.通过浏览器访问,问题不大,例如下图: 但是想通过手机访问的时候,问题就出现了,同样的参数,结果很不一样,而且基本搜不到自己想要的,后来换做通过自己的服务器去访问,还是搜不到,后来查了一下资料,暂时也没解决.于是,目前就

  • android打开rar压缩文件

    复制代码 代码如下: private void open(String fileString) { Intent intent = new Intent(); intent.setClassName("com.rarlab.rar", "com.rarlab.rar.MainActivity"); File file = new File(fileString); Uri data = Uri.fromFile(file); intent.setData(data)

  • 一文教会你用Python读取PDF文件

    目录 实战场景 Python PDF 实战编码 补充 实战场景 Python 工程师在日常的工作中,经常会碰到解析和处理PDF文件的情况,实战中需求主要分为如下情况: 提取 PDF 中的文字 将 PDF 中每页转换为图片 word 转换为PDF PDF生成,编辑,导入导出 PDF在线渲染 除了最后一项需要前端配合以外,其余内容都可以直接在 python 端进行实现. 本次实战选择 pdfplumber 库进行学习,可以提前安装该库,不过有一点需要注意,该库主要用于读取 PDF 进行操作,写入和编

  • Android 如何本地加载pdf文件

    大部分app打开pdf文件是通过intent调起手机中能打开pdf文件的工具,来查看pdf文件,如果需求是,用户在app内下载好pdf文件后,不通过第三方的工具,本地打开. 这样的需求要怎么实现呢?上网查了一些资料,发现了一个很好用PDF开源库. 使用起来也很简单,首先添加PDFView的引用 compile 'com.github.barteksc:android-pdf-viewer:2.4.0' 布局中引用PdfView <LinearLayout xmlns:android="ht

  • Android webview打开本地图片上传实现代码

    Webview打开本地图片选择器十分之麻烦,其在安卓系统3x 4x 5x上的行为都不同,处理也不同,所以之前差点崩溃.经过测试和完善,最终其在各个版本上都能完美工作. 直接上代码 package com.testandroid.webview; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AlertDialog; imp

随机推荐