当前位置: 移动技术网 > 移动技术>移动开发>Android > Android 打开网络上pdf文件

Android 打开网络上pdf文件

2019年07月24日  | 移动技术网移动技术  | 我要评论

之前写过一篇android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件。今天终于可以兑现承诺了。frok一份代码https://github.com/joanzapata/android-pdfview,源码地址:,开始改造一番。

1.基本思路:

打开网络pdf 思路整体还是来源与图片的加载。

android中加载网络图片的框架有很多个。如image-laoder, fresco、glide等,首先都是从内存中找图片,如果内存中没有,接着从本地找,本地没有在从网络下载。

android中加载pdf也是类似,首先从本地找pdf文件,如果本地存在该pdf文件,直接打开,如果本地不存在,将该pdf文件下载到本地在打开。

下载文件用到了retrofit2的库,已经封装到android_pdf中了。

2.依赖android_pdf库方法

2.1 在项目的gradle中增加如下代码:

compile 'com.lidong.pdf:android_pdf:1.0.1'

2.2 一句代码就可以加载网络pdf。

pdfview.filefromlocalstorage(this,this,this,fileurl,filename);   //设置pdf文件地址

2.3对filefromlocalstorage(this,this,this,fileurl,filename)的解析

/**

 * 加载pdf文件
 * @param onpagechangelistener
 * @param onloadcompletelistener
 * @param ondrawlistener
 * @param fileurl
 * @param filename
 */
 public void filefromlocalstorage(
 final onpagechangelistener onpagechangelistener,
     final onloadcompletelistener onloadcompletelistener,
     final ondrawlistener ondrawlistener,
     string fileurl,
     final string filename)
  1. onpagechangelistener onpagechangelistener :翻页回调
  2. onloadcompletelistener onloadcompletelistener:加载完成的回调
  3. ondrawlistener:页面绘制的回调
  4. string fileurl : 文件的网络地址
  5. string filename 文件名称

3.使用android_pdf库方法

3.1写一个布局文件

<?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.lidong.pdf.pdfview
 android:id="@+id/pdfview"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 />
</relativelayout>

3.2在mainactivity中加载

import android.graphics.canvas;
import android.os.environment;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.util.log;
import android.widget.toast;
import com.lidong.pdf.pdfview;
import com.lidong.pdf.api.apimanager;
import com.lidong.pdf.listener.ondrawlistener;
import com.lidong.pdf.listener.onloadcompletelistener;
import com.lidong.pdf.listener.onpagechangelistener;
import com.lidong.pdf.util.fileutils;
import java.io.file;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.io.inputstream;
import okhttp3.responsebody;
import rx.android.schedulers.androidschedulers;
import rx.functions.action1;
import rx.schedulers.schedulers;

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 );
 displayfromfile1("填写所要打开的pdf地址");
 }
 /**
 * 获取打开网络的pdf文件
 * @param fileurl
 * @param filename
 */
 private void displayfromfile1( string fileurl ,string filename) {
 showprogress(); pdfview.filefromlocalstorage(this,this,this,fileurl,filename); //设置pdf文件地址

 }
 /**
 * 翻页回调
 * @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();
 hideprogress();
 }
 @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();
 }
 /**
 * 显示对话框
 */
 private void showprogress(){
 loadinguihelper.showdialogforloading(this,"报告加载中,请等待。。。",false);
 }
 /**
 * 关闭等待框
 */
 private void hideprogress(){
 loadinguihelper.hidedialogforloading();
 }

效果实现:

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网