zoukankan      html  css  js  c++  java
  • android 显示 PDF 文件

    2017/2/13更新:

    有朋友反映原来的库已经不能用了,或者用了以后有这样那样的问题,这里统一回复一下。

     https://github.com/JoanZapata/android-pdfview 这个项目是2年前的项目了,很久没维护了。

    作者已经在GitHub的Readme里面做了说明:

    并且推荐了新的PDF开源库:https://github.com/barteksc/AndroidPdfViewer

    ------------------------------------------以下是原文,已过时 -------------------------------------

    1、开源项目地址 :

      https://github.com/JoanZapata/android-pdfview

    2、引用

        compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'

    3、布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:context="zyj.com.myapplication.MainActivity">
    
    
        <com.joanzapata.pdfview.PDFView
            android:id="@+id/pdfView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />
    
    
    </RelativeLayout>

    使用

    package zyj.com.myapplication;
    import android.graphics.Canvas;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.Toast;
    import com.joanzapata.pdfview.PDFView;
    import com.joanzapata.pdfview.listener.OnDrawListener;
    import com.joanzapata.pdfview.listener.OnLoadCompleteListener;
    import com.joanzapata.pdfview.listener.OnPageChangeListener;
    
    import java.io.File;
    
    public class MainActivity extends AppCompatActivity implements OnPageChangeListener
            , OnLoadCompleteListener  , OnDrawListener {
    
        private PDFView pdfView ;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            pdfView = (PDFView) findViewById( R.id.pdfView );
    
            //从assets目录读取pdf 
            displayFromAssets("bao.pdf");
    
            //从文件中读取pdf
            displayFromFile( new File( "fileName"));
    
        }
    
        private void displayFromAssets(String assetFileName ) {
            pdfView.fromAsset(assetFileName)   //设置pdf文件地址
                    .defaultPage(6)         //设置默认显示第1页
                    .onPageChange(this)     //设置翻页监听
                    .onLoad(this)           //设置加载监听
                    .onDraw(this)            //绘图监听
                    .showMinimap(false)     //pdf放大的时候,是否在屏幕的右上角生成小地图
                    .swipeVertical( false )  //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
                    .enableSwipe(true)   //是否允许翻页,默认是允许翻页
                   // .pages( 2 , 3 , 4 , 5  )  //把2 , 3 , 4 , 5 过滤掉
                    .load();
        }
    
        private void displayFromFile( File file ) {
            pdfView.fromFile(file)   //设置pdf文件地址
                    .defaultPage(6)         //设置默认显示第1页
                    .onPageChange(this)     //设置翻页监听
                    .onLoad(this)           //设置加载监听
                    .onDraw(this)            //绘图监听
                    .showMinimap(false)     //pdf放大的时候,是否在屏幕的右上角生成小地图
                    .swipeVertical( false )  //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
                    .enableSwipe(true)   //是否允许翻页,默认是允许翻
                    // .pages( 2 , 3 , 4 , 5  )  //把2 , 3 , 4 , 5 过滤掉
                    .load();
        }
    
        /**
         * 翻页回调
         * @param page
         * @param pageCount
         */
        @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 onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
           // Toast.makeText( MainActivity.this ,  "pageWidth= " + pageWidth + "
           // pageHeight= " + pageHeight + " displayedPage="  + displayedPage , Toast.LENGTH_SHORT).show();
        }
    }

    4、项目地址 ( android Studio 环境)

     http://download.csdn.net/detail/yanzi2015/9341525

        

  • 相关阅读:
    数据库的......
    数据库
    XML
    网络编程
    I/O系统---流
    周结

    集合,框架
    Spring入门
    Java Wed
  • 原文地址:https://www.cnblogs.com/zhaoyanjun/p/5033923.html
Copyright © 2011-2022 走看看