博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 打开网络上pdf文件
阅读量:6279 次
发布时间:2019-06-22

本文共 3861 字,大约阅读时间需要 12 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/53927157

之前写过一篇的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件。今天终于可以兑现承诺了。frok一份代码,开始改造一番。

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

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


效果实现:

这里写图片描述

代码已经奉上,请大家伙给点建议。一起交流(1561281670)

你可能感兴趣的文章
淘宝API-类目
查看>>
virtualbox 笔记
查看>>
Git 常用命令
查看>>
驰骋工作流引擎三种项目集成开发模式
查看>>
SUSE11修改主机名方法
查看>>
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
运维基础命令
查看>>