Android 实现PDF文件的查看(本地和网络文件)

本文介绍了在Android应用中如何实现PDF文件的查看,包括从本地Assets资源和网络加载PDF。首先,在gradle中引入相关依赖,然后通过PDFView控件展示本地PDF。对于网络PDF,通过OkHttp下载文件到手机存储,并在下载完成后打开阅读。同时,实现了OnPageChangeListener来显示当前页面和总页数。
摘要由CSDN通过智能技术生成

PDF文件大家应该不陌生,说的简单点,其实我认为就是一个全图片的Word,里面的每个页面都可以看做是一张带文字的图片,接下来我们看看在Android应用里如何读取和查看PDF文件内容。

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

compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'

先看看布局文件代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include layout="@layout/title_all" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.joanzapata.pdfview.PDFView
            android:id="@+id/pdf"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <TextView
            android:id="@+id/tv_page"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:textColor="@color/colorAccent"
            android:layout_alignParentTop="true"
            android:textSize="18sp" />
    </RelativeLayout>
</LinearLayout>

其中PDFView控件就是pdfview库里面的查看PDF的控件,接下来声明并初始化后查看本地Asserts资源下的PDF文件,代码如下

pdf.fromAsset("abcd.pdf")
        .defaultPage(1)
        .showMinimap(false)
        .enableSwipe(true)
        .onPageChange(this)
        .load();

这样就可以查看pdf文件内容了,但是如果是网上在线查看PDF文件该如何实现呢?

我的思路是这样:

第一步,把PDF文件下载下来;

第二步,把文件保存在手机存储中;

第三步,读取手机SD卡的PDF文件。

接下来就一步一步实现,当然下载、保存、读取SD卡的内容首先就得有权限,相关权限的申请就不多说了,基本功你懂得!

下载的话方式很多,你可以用任何可以下载文件的网络框架,我用的是okhttp下载的,代码如下

/**
 * 下载
 */
private void downloadFile() {
    OkHttpUtils.build().download(path, savePath, new OkHttpUtils.OnDownloadListener() {
        @Override
        public void onDownloadSuccess(File file) {
            tvPage.setText("加载完成正在打开..");
            showPdf(file.getPath());
        }
        @Override
        public void onDownloading(int progress) {
            Log.i("JAVA&#
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值