Android 打开网络上pdf文件
发布时间 - 2026-01-11 00:29:35 点击率:次之前写过一篇Android打开本地pdf文件的文章,最后总结的时候说,后面一定要拓展库,让其也能打开网络的的pdf文件。今天终于可以兑现承诺了。frok一份代码https://github.com/JoanZapata/android-pdfview,源码地址:http://xiazai./201704/yuanma/android-pdfview-master_jb51.rar,开始改造一番。

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)
- OnPageChangeListener onPageChangeListener :翻页回调
- OnLoadCompleteListener onLoadCompleteListener:加载完成的回调
- OnDrawListener:页面绘制的回调
- String fileUrl : 文件的网络地址
- 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();
}
代码地址
效果实现:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# android
# 打开pdf文件
# 打开pdf
# 打开网络pdf
# Android 打开本地pdf文件
# Android pdf viewer在android studio应用问题说明详解
# Android 下载并打开PDF
# Doc
# Dwg文档实例
# 加载
# 回调
# 翻页
# 一句
# 有很多
# 也能
# 是从
# 不存在
# 中了
# 所要
# 将该
# 对话框
# 写过
# 让其
# 就可以
# 中找
# 网络地址
# 加载中
# 请等待
# java
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php 三元运算符实例详细介绍
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
IOS倒计时设置UIButton标题title的抖动问题
微信小程序制作网站有哪些,微信小程序需要做网站吗?
中国移动官方网站首页入口 中国移动官网网页登录
JavaScript实现Fly Bird小游戏
如何实现javascript表单验证_正则表达式有哪些实用技巧
如何在阿里云域名上完成建站全流程?
如何在服务器上配置二级域名建站?
Python数据仓库与ETL构建实战_Airflow调度流程详解
如何用低价快速搭建高质量网站?
无锡营销型网站制作公司,无锡网选车牌流程?
如何用y主机助手快速搭建网站?
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
如何用已有域名快速搭建网站?
Laravel如何实现API速率限制?(Rate Limiting教程)
如何快速上传自定义模板至建站之星?
Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
Laravel如何为API编写文档_Laravel API文档生成与维护方法
中山网站制作网页,中山新生登记系统登记流程?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
PHP正则匹配日期和时间(时间戳转换)的实例代码
网站建设要注意的标准 促进网站用户好感度!
如何打造高效商业网站?建站目的决定转化率
大型企业网站制作流程,做网站需要注册公司吗?
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
济南网站建设制作公司,室内设计网站一般都有哪些功能?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
如何基于云服务器快速搭建个人网站?
javascript日期怎么处理_如何格式化输出
魔方云NAT建站如何实现端口转发?
如何在云主机上快速搭建网站?
简单实现Android文件上传
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
黑客如何通过漏洞一步步攻陷网站服务器?
如何选择可靠的免备案建站服务器?
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
非常酷的网站设计制作软件,酷培ai教育官方网站?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Laravel怎么实现模型属性的自动加密
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
如何基于PHP生成高效IDC网络公司建站源码?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
canvas 画布在主流浏览器中的尺寸限制详细介绍
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?

