• 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);
        }
    
    
    
    
    }
  • 相关阅读:
    Python实例 包机制
    Python实例 类和继承
    python实例 文件处理
    python实例 异常处理
    配置 Apache+php多端口多站点(转载)
    C#中Delegate和Event以及它们的区别(转载)
    LINQ to SQL更新数据库操作(转载)
    创业公司如何实施敏捷开发(转)
    利用ps橡皮擦工具快速抠图
    XP win2003系统 微软雅黑字体的使用方法
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/12092109.html
Copyright © 2020-2023  润新知