Android PdfViewer案例使用

今天按项目要求找了一个android的PDF控件,各种操作效果都非常好,在这里和大家分享一下。

com.joanzapata.pdfview:android-pdfview  该PDF控件加载大存储的PDF就会报错,所以建议使用 AndroidPdfViewer 控件。

这是github的地址:https://github.com/barteksc/AndroidPdfViewer

用法很简单:

1.在build.gradle里面添加依赖   

implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'

2.然后就可以直接在layout里面使用了

<com.github.barteksc.pdfviewer.PDFView
        android:id="@+id/pdfView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline2" />

3.Activity

import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnPageErrorListener;
import cn.pda.serialport.Tools;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle;

public class MainActivity extends AppCompatActivity implements OnPageChangeListener, OnLoadCompleteListener,
        OnPageErrorListener, View.OnClickListener {

    private PDFView pdfView ;


  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         //搭建环境的API Level必须大于等于9
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

pdfView =  findViewById( R.id.pdfView);

 displayFromFile(new File(Environment.getExternalStorageDirectory() + "/UHFToPdf/test.pdf"));


    }

 


 private void displayFromFile( File file ) {

        try{
            pdfView.fromFile(file)   //设置pdf文件地址
                    .defaultPage(pageNumber)
                    .onPageChange(this)
                    .enableSwipe(false)
                    .enableAnnotationRendering(true)
                    .onLoad(this)
                    .scrollHandle(new DefaultScrollHandle(this))
                    .spacing(10) // in dp
                    .onPageError(this)
//                .pageFitPolicy(FitPolicy.BOTH)
                    .load();
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }


 @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();
    }

  @Override
    public void onPageError(int page, Throwable t) {
        Log.e(TAGNAME, "Cannot load page " + page);
    }




}
原文地址:https://www.cnblogs.com/zoro-zero/p/12092109.html