一、在对应模块的build.gradle文件中加入依赖

dependencies {implementation 'com.github.barteksc:android-pdf-viewer:3.1.0-beta.1'}

二、Activity布局Xml文件中,加入com.github.barteksc.pdfviewer.PDFView控件

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".PdfActivity"><com.github.barteksc.pdfviewer.PDFViewandroid:id="@+id/pdfView"android:layout_width="match_parent"android:layout_height="match_parent" /></android.support.constraint.ConstraintLayout>

三、PDFView只能预览本地文件 如果是网络PDF还需要下载

  PDFView加载本地文件代码

/*** 查看PDF*/private void SeePdf(File dest) {try {pdfView.setVisibility(View.VISIBLE);pdfView.useBestQuality(false);Constants.Cache.CACHE_SIZE=40;pdfView.fromFile(dest).load(); } catch (Exception e) { e.printStackTrace(); } }

  下载PDF使用OKhttp:

/*** 开始下载PDF*/private void DownloadPdf() {cacheUrl = getCacheDir().getAbsolutePath();//应用缓存路径pdfName = mPdfUrl.substring(mPdfUrl.lastIndexOf("/") + 1);//文件名称final File dest = new File(cacheUrl, pdfName);if (dest.exists()) {SeePdf(dest);} else {Request request = new Request.Builder().url(mPdfUrl).build();new OkHttpClient().newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {// 下载失败}@Overridepublic void onResponse(Call call, Response response) throws IOException {Sink sink = null;BufferedSink bufferedSink = null;try {if (!dest.exists()) {boolean newFile = dest.createNewFile();}sink = Okio.sink(dest);bufferedSink = Okio.buffer(sink);bufferedSink.writeAll(response.body().source());bufferedSink.close();if (handler == null) {handler = new Handler(Looper.getMainLooper());}handler.post(new Runnable() {@Overridepublic void run() {SeePdf(dest);}});} catch (Exception e) {e.printStackTrace();} finally {if (bufferedSink != null) {bufferedSink.close();}}}});}}

自动翻页的实现:

  1、在PDFView的OnRenderListener实现翻页,handler.postDelayed来定时执行翻页方法

 pdfView.fromFile(dest).onRender(new OnRenderListener() {@Overridepublic void onInitiallyRendered(int nbPages) {if (pdf_trun_time != null) {if (handler == null) {handler = new Handler();}handler.postDelayed(goNextPageRunnable, pdf_trun_time);}}}).load();private Runnable goNextPageRunnable = new Runnable() {@Overridepublic void run() {if (pdf_trun_time != null) {handler.postDelayed(this, pdf_trun_time);//设置循环时间,此处是5秒GoNextPage();}}};private void GoNextPage() {int totalPage = pdfView.getPageCount();int curPage = pdfView.getCurrentPage();int nextPage = 0;if (curPage < totalPage - 1) {nextPage = curPage + 1;} else {nextPage = 0;}pdfView.jumpTo(nextPage, true);}

一个比较简单的设置

Android之内嵌PDF预览相关推荐

  1. Android PDF原生实现 PDF阅读、PDF手势伸缩、PDF目录、PDF预览缩略图 PDF方案选择 google doc android-pdfview mupdf pdf.js x5

    ##1.背景 近期,公司希望实现安卓原生端的PDF功能,要求:高效.实用. 经过两天的调研.编码,实现了一个简单Demo,如上图所示. 关于安卓原生端的PDF功能实现,技术点还是很多的,为了咱们安卓开 ...

  2. PDF 预览和下载你是怎么实现的?

    在开发过程中要求对 PDF 类型的发票提供 预览 和 下载 功能,**PDF** 类型文件的来源又包括 H5 移动端 和 **PC 端**,而针对这两个不同端的处理会有些许不同,下文会有所提及. 针对 ...

  3. Android wps文件下载、预览

    Android wps文件下载.预览 可能大家都遇到了Android处理办公文件不太方便的问题,先强调一点Android是做不到在线预览的,目前的解决方案都是先下载在打开,这里我提供我常用的两种方案, ...

  4. 实现微信小程序和手机app(基于vue)PDF预览功能

    引言:最近在做微信小程序和手机端app开发(基于vue),实现一个pdf预览功能. 需求:点击pdf列表,跳转到预览pdf页面,页面上强制阅读10s后,显示一个按钮返回,更新阅读状态: 要求:不能调用 ...

  5. pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件。

    pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件. 注意:本地绝对路径地址不能加载,跨域问题用代理或者服务端解决. svg模式渲染存在缺陷,只能渲染普通pd ...

  6. Android OpenGL使用GLSurfaceView预览视频

    Android OpenGL使用GLSurfaceView预览视频 第一章 相关知识介绍 在介绍具体的功能之前,先对一些主要的类和方法进行一些介绍,这样可以更好的理解整个程序 1.1 GLSurfac ...

  7. 【Android RTMP】Android Camera 视频数据采集预览 ( 图像传感器方向设置 | Camera 使用流程 | 动态权限申请 )

    文章目录 安卓直播推流专栏博客总结 一. Camera 传感器方向简介 二. Camera 图像传感器横向显示数据 三. Camera 图像传感器纵向显示数据 四. 设置 Camera 预览数据方向 ...

  8. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )

    文章目录 安卓直播推流专栏博客总结 一. Android 端数据采集涉及到的相关概念 二. Camera 预览图像尺寸设置 三. 获取摄像头采集的数据格式 安卓直播推流专栏博客总结 Android R ...

  9. Winforn中使用FastReport实现点击导出按钮PDF预览并弹出另存为对话框

    场景 FastReport安装包下载.安装.去除使用限制以及工具箱中添加控件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

最新文章

  1. 为ML开发、部署提供靠谱的系统工程方法,NASA、牛津、微软等多家机构提出MLTRL框架
  2. 解决虚拟机vmware虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题
  3. CMake编译Widget UI Qt程序
  4. 简单插入排序,折半插入排序和2路插入排序 c源码
  5. 第一类斯特林数学习记录
  6. android蓝牙串口通讯
  7. phoneGap、JQueryMobile 简介及中文API地址
  8. QueueUserWorkItem函数
  9. 【VSLAM学习记录2】初识cmake
  10. VS无法启动程序调试监视器未能启动
  11. 计算机组成原理第一部: 计算机发展到加法器ALU的改进
  12. 打磨锤子计算机专业,钳工磨锤子实训心得体会
  13. 15款你可能不知道的精致Mac应用
  14. NVIDIA Jetson之UART功能开发
  15. 榆熙电商:拼多多商家一年能进行几次申诉?
  16. 基于 shell 的自动邮件任务监测器
  17. XP计算机桌面锁定进不去,XP系统电脑进不了桌面怎么办
  18. 计算机基础及photoshop应用试题,计算机基础及Photoshop应用选择题(计算机一级B考试卷).doc...
  19. iPhone开发之SQLite 实现中文排序的教程
  20. 秒表计时器怎么读_秒表应该怎么读?

热门文章

  1. hihoCoder #1692 : 第K小分数
  2. CMYK模式(cmyk模式导出的图片颜色变了)
  3. “我在用生命送快递”
  4. 5寸android智能手机,5寸刚入门 六款巨屏安卓智能手机盘点(5)
  5. o2o实战报错:addShopImg error:null / character to be escaped is missing
  6. java 环境变量 locale_locale的设定及其LANG、LC_ALL、LANGUAGE环境变量的区别
  7. 【淘宝商品上架接口】为什么店铺流量访客很高,但是转化却非常的低
  8. 删除商品时,如何不影响订单里该商品相关的信息显示
  9. Origin怎样让坐标轴标签置于曲线顶层/上方
  10. python笔记图片_python-opencv笔记 图像的读取和简单几何图形绘制