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




}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM