zoukankan      html  css  js  c++  java
  • 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);
        }
    
    
    
    
    }
  • 相关阅读:
    html5 返回当前地理位置的坐标点(经纬度)
    C#趣味程序---百鸡百钱
    Android开发:怎样隐藏自己的app应用
    Android Studio一些简单设置
    集群通信组件tribes之集群的消息接收通道
    Java基础实例
    如何用webbrowser获取ajax动态生成的网页的源码?
    phantomjs 下拉滚动条获取网页的全部源码
    Nodejs+定时截图+发送邮件
    关注网页的更新状况,了解最新的handsup 消息.
  • 原文地址:https://www.cnblogs.com/zoro-zero/p/12092109.html
Copyright © 2011-2022 走看看