Android 中pdfView的使用

很多时候我们需要加载pdf,今天就来介绍一下pdfView这个控件,对于使用也很简单。

效果图:
这里写图片描述

github地址:

https://github.com/barteksc/AndroidPdfViewer

添加依赖:

compile ‘com.github.barteksc:android-pdf-viewer:2.7.0-beta.1’

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context="com.example.administrator.pdfviewdemo.MainActivity">

    <com.github.barteksc.pdfviewer.PDFView
        android:id="@+id/pdfView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>


    <LinearLayout
        android:layout_width="match_parent"
        android:gravity="center"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/pageTv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:textSize="15sp" />

        <TextView
            android:id="@+id/pageTv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:textSize="15sp" />

    </LinearLayout>

</LinearLayout>

MainActivity中:


public class MainActivity extends AppCompatActivity {

    private PDFView pdfView;
    private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private TextView pageTv, pageTv1;
    private int p;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取动态权限
        getPermission();

        pdfView = (PDFView) findViewById(R.id.pdfView);
        pageTv = (TextView) findViewById(R.id.pageTv);
        pageTv1 = (TextView) findViewById(R.id.pageTv1);

        final int myPage = (int) SPUtils.get(MainActivity.this, "page", 0);
        //选择pdf
        pdfView.fromAsset("android.pdf")
//                .pages(0, 2, 3, 4, 5); // 把0 , 2 , 3 , 4 , 5 过滤掉
                //是否允许翻页,默认是允许翻页
                .enableSwipe(true)
                //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
                .swipeHorizontal(true)
                //
                .enableDoubletap(false)
                //设置默认显示第0页
                .defaultPage(myPage)
                //允许在当前页面上绘制一些内容,通常在屏幕中间可见。
//                .onDraw(onDrawListener)
//                // 允许在每一页上单独绘制一个页面。只调用可见页面
//                .onDrawAll(onDrawListener)
                //设置加载监听
                .onLoad(new OnLoadCompleteListener() {
                    @Override
                    public void loadComplete(int nbPages) {
                        pageTv.setText(nbPages + "");
                        pageTv1.setText(myPage +  "/");
                    }
                })
                //设置翻页监听
                .onPageChange(new OnPageChangeListener() {

                    @Override
                    public void onPageChanged(int page, int pageCount) {
                        p = page;
                        pageTv1.setText(page + "/");
                    }
                })
                //设置页面滑动监听
//                .onPageScroll(onPageScrollListener)
//                .onError(onErrorListener)
                // 首次提交文档后调用。
//                .onRender(onRenderListener)
                // 渲染风格(就像注释,颜色或表单)
                .enableAnnotationRendering(false)
                .password(null)
                .scrollHandle(null)
                // 改善低分辨率屏幕上的渲染
                .enableAntialiasing(true)
                // 页面间的间距。定义间距颜色,设置背景视图
                .spacing(0)
                .load();
    }

    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
    };


    private void getPermission() {
        int hasWriteContactsPermission = ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.READ_EXTERNAL_STORAGE);
        if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
            if (!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
                    Manifest.permission.READ_EXTERNAL_STORAGE)) {
                ActivityCompat.requestPermissions(MainActivity.this,
                        PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
            }

            ActivityCompat.requestPermissions(MainActivity.this,
                    PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
        }

        while ((ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.READ_EXTERNAL_STORAGE)) != PackageManager.PERMISSION_GRANTED) {
        }
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        //当activity销毁的时候,保存当前的页数,下次打开的时候,直接翻到这个页
        SPUtils.put(MainActivity.this, "page", p);
    }
}

这里我们用sp保存了打开的pdf的当前页数,当下次再进入的时候,直接显示就是这个页。

本人菜鸟一个,有什么不对的地方希望大家指出评论,大神勿喷,希望大家一起学习进步!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
以下是两种在Android上预览PDF文件的方法: 1. 使用Android PdfViewer库 Android PdfViewer是一个开源库,可以在Android应用实现PDF文件的预览。你可以通过在项目的build.gradle文件添加依赖来使用该库: ```groovy implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' ``` 然后,在你的Activity,你可以使用PdfView来加载和显示PDF文件: ```java import com.github.barteksc.pdfviewer.PDFView; public class MainActivity extends AppCompatActivity { private PDFView pdfView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pdfView = findViewById(R.id.pdfView); pdfView.fromAsset("sample.pdf") // 从assets文件夹加载PDF文件 .load(); } } ``` 在上面的代码,我们假设你的项目有一个名为"sample.pdf"的PDF文件放在assets文件夹。你可以根据实际情况修改文件名和路径。 2. 使用Mozilla的PDF.js库 PDF.js是一个由Mozilla开发的JavaScript库,可以在Web浏览器预览PDF文件。你可以将PDF.js集成到你的Android应用,通过WebView加载并显示PDF文件。首先,你需要将PDF.js库文件添加到你的项目。你可以从GitHub上下载PDF.js库文件,并将其放置在你的项目的assets文件夹。然后,在你的Activity,你可以使用WebView来加载PDF.js库文件和PDF文件: ```java import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webView.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=sample.pdf"); } } ``` 在上面的代码,我们假设你将PDF.js库文件放在了assets文件夹的"pdfjs"子文件夹,并且你的项目有一个名为"sample.pdf"的PDF文件。你可以根据实际情况修改文件名和路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值