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&#