pdfview_pdfviewer - CSDN
精华内容
参与话题
  • Android 中pdfView的使用

    千次阅读 2018-08-07 21:35:01
    很多时候我们需要加载pdf,今天就来介绍一下pdfView这个控件,对于使用也很简单。 效果图:  github地址: https://github.com/barteksc/AndroidPdfViewer 添加依赖: compile ...

    很多时候我们需要加载pdf,今天就来介绍一下pdfView这个控件,对于使用也很简单。

    效果图: 
    这里写图片描述

    github地址:

    https://github.com/barteksc/AndroidPdfViewer

    添加依赖:

    compile ‘com.github.barteksc:android-pdf-viewer:2.7.0-beta.1’

    xml文件:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.example.administrator.pdfviewdemo.MainActivity">
    
        <com.github.barteksc.pdfviewer.PDFView
            android:id="@+id/pdfView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:gravity="center"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <TextView
                android:id="@+id/pageTv1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:textSize="15sp" />
    
            <TextView
                android:id="@+id/pageTv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:textSize="15sp" />
    
        </LinearLayout>
    
    </LinearLayout>
    

    MainActivity中:

    
    public class MainActivity extends AppCompatActivity {
    
        private PDFView pdfView;
        private static final int REQUEST_EXTERNAL_STORAGE = 1;
        private TextView pageTv, pageTv1;
        private int p;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //获取动态权限
            getPermission();
    
            pdfView = (PDFView) findViewById(R.id.pdfView);
            pageTv = (TextView) findViewById(R.id.pageTv);
            pageTv1 = (TextView) findViewById(R.id.pageTv1);
    
            final int myPage = (int) SPUtils.get(MainActivity.this, "page", 0);
            //选择pdf
            pdfView.fromAsset("android.pdf")
    //                .pages(0, 2, 3, 4, 5); // 把0 , 2 , 3 , 4 , 5 过滤掉
                    //是否允许翻页,默认是允许翻页
                    .enableSwipe(true)
                    //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
                    .swipeHorizontal(true)
                    //
                    .enableDoubletap(false)
                    //设置默认显示第0页
                    .defaultPage(myPage)
                    //允许在当前页面上绘制一些内容,通常在屏幕中间可见。
    //                .onDraw(onDrawListener)
    //                // 允许在每一页上单独绘制一个页面。只调用可见页面
    //                .onDrawAll(onDrawListener)
                    //设置加载监听
                    .onLoad(new OnLoadCompleteListener() {
                        @Override
                        public void loadComplete(int nbPages) {
                            pageTv.setText(nbPages + "");
                            pageTv1.setText(myPage +  "/");
                        }
                    })
                    //设置翻页监听
                    .onPageChange(new OnPageChangeListener() {
    
                        @Override
                        public void onPageChanged(int page, int pageCount) {
                            p = page;
                            pageTv1.setText(page + "/");
                        }
                    })
                    //设置页面滑动监听
    //                .onPageScroll(onPageScrollListener)
    //                .onError(onErrorListener)
                    // 首次提交文档后调用。
    //                .onRender(onRenderListener)
                    // 渲染风格(就像注释,颜色或表单)
                    .enableAnnotationRendering(false)
                    .password(null)
                    .scrollHandle(null)
                    // 改善低分辨率屏幕上的渲染
                    .enableAntialiasing(true)
                    // 页面间的间距。定义间距颜色,设置背景视图
                    .spacing(0)
                    .load();
        }
    
        private static String[] PERMISSIONS_STORAGE = {
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        };
    
    
        private void getPermission() {
            int hasWriteContactsPermission = ContextCompat.checkSelfPermission(MainActivity.this,
                    Manifest.permission.READ_EXTERNAL_STORAGE);
            if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
                if (!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
                        Manifest.permission.READ_EXTERNAL_STORAGE)) {
                    ActivityCompat.requestPermissions(MainActivity.this,
                            PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
                }
    
                ActivityCompat.requestPermissions(MainActivity.this,
                        PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
            }
    
            while ((ContextCompat.checkSelfPermission(MainActivity.this,
                    Manifest.permission.READ_EXTERNAL_STORAGE)) != PackageManager.PERMISSION_GRANTED) {
            }
        }
    
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            //当activity销毁的时候,保存当前的页数,下次打开的时候,直接翻到这个页
            SPUtils.put(MainActivity.this, "page", p);
        }
    }

    这里我们用sp保存了打开的pdf的当前页数,当下次再进入的时候,直接显示就是这个页。

    展开全文
  • 使用pdfview加载PDF文件

    2020-07-29 14:20:21
    使用pdfView在线加载PDF文件,dome中有阅读进度条,整体美观便捷,其中可指定文件的下载路径,阅读完后可删除文件,可实现项目各种需求
  • PDF Viewer

    2020-07-29 14:19:57
    免安装,轻量强大的pdf查看阅读标注器,高清显示,ocr功能,实时标注,无广告,无捆绑,用得安心舒适,绿色安全
  • pdfview加载(使用第三方)

    千次阅读 2018-07-20 17:38:49
    compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar' implementation 'com.squareup.okhttp3:okhttp:3.4.2' 是OKHTTP和PDF的依赖,通过先下载到本地的方式,加载本地文件 需要注意申请读写权限 package...

    首先,添加依赖

    compile 'com.joanzapata.pdfview:android-pdfview:1.0.4@aar'
    implementation 'com.squareup.okhttp3:okhttp:3.4.2'

    是OKHTTP和PDF的依赖,通过先下载到本地的方式,加载本地文件

    需要注意申请读写权限

    package com.demo.com.demoapplication;
    
    import android.Manifest;
    import android.app.Activity;
    import android.content.pm.PackageManager;
    import android.graphics.Canvas;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Looper;
    import android.support.annotation.Nullable;
    import android.support.v4.app.ActivityCompat;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.TextView;
    
    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;
    import java.io.IOException;
    
    import okhttp3.Call;
    import okhttp3.Callback;
    import okhttp3.OkHttpClient;
    import okhttp3.Request;
    import okhttp3.Response;
    import okio.BufferedSink;
    import okio.Okio;
    import okio.Sink;
    
    /**
     * Created by wy on 2018/7/20.
     */
    
    public class PdfActivity extends AppCompatActivity {
    
        private String mPdfUrl = "http://pdf.dfcfw.com/pdf/H2_AN201807051163584888_1.pdf";
        private static final int REQUEST_EXTERNAL_STORAGE = 1;
        private static String[] PERMISSIONS_STORAGE = {
                Manifest.permission.READ_EXTERNAL_STORAGE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE};
        private static Activity mCtx;
        private String cacheUrl = "";//应用缓存路径
        private String pdfName = "error";//文件名称   默认一个错误名称
        private boolean mLoadComplete = false;//加载完成
        private TextView mPageTv;//页数
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout);
            mCtx = this;
            mPageTv = findViewById(R.id.pdfpage);
            checkPerMission();
        }
    
        private Handler handler = null;
        private Runnable checkRunnable = new Runnable() {
            @Override
            public void run() {
                checkPerMission();
            }
        };
    
        /**
         * 检查读写权限
         */
        private void checkPerMission() {
            int permission = ActivityCompat.checkSelfPermission(mCtx,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE);
            if (permission != PackageManager.PERMISSION_GRANTED) {//无权限  申请
                // We don't have permission so prompt the user
                ActivityCompat.requestPermissions(mCtx, PERMISSIONS_STORAGE,
                        REQUEST_EXTERNAL_STORAGE);
                if (handler == null) {
                    handler = new Handler();
                }
                handler.postDelayed(checkRunnable, 1000);//隔一秒再检查
            } else {
                DownloadPdf();
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            try {//删除文件  避免引起缓存过大
                File dest = new File(cacheUrl, pdfName);
                if (dest.exists()) {
                    dest.delete();
                }
            } catch (Exception e) {
    
            }
        }
    
        /**
         * 开始下载PDF
         */
        private void DownloadPdf() {
            cacheUrl = getCacheDir().getAbsolutePath();//应用缓存路径
            pdfName = mPdfUrl.substring(mPdfUrl.lastIndexOf("/") + 1);//文件名称
            final File dest = new File(cacheUrl, pdfName);
            if (dest.exists()) {
                SeePdf(dest);
            } else {
                Request request = new Request.Builder().url(mPdfUrl).build();
                new OkHttpClient().newCall(request).enqueue(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {
                        // 下载失败
                    }
    
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        Sink sink = null;
                        BufferedSink bufferedSink = null;
                        try {
                            if (!dest.exists()) {
                                boolean newFile = dest.createNewFile();
                            }
                            sink = Okio.sink(dest);
                            bufferedSink = Okio.buffer(sink);
                            bufferedSink.writeAll(response.body().source());
                            bufferedSink.close();
                            if (handler == null){
                                handler = new Handler(Looper.getMainLooper());
                            }
                            handler.post(new Runnable() {
                                @Override
                                public void run() {
                                    SeePdf(dest);
                                }
                            });
                        } catch (Exception e) {
                            e.printStackTrace();
                        } finally {
                            if (bufferedSink != null) {
                                bufferedSink.close();
                            }
    
                        }
                    }
                });
            }
        }
    
        /**
         * 查看PDF
         */
        private void SeePdf(File dest) {
            try {
                PDFView webPdf = findViewById(R.id.pdfview);
                webPdf.setVisibility(View.VISIBLE);
                webPdf.fromFile(dest)
                        .defaultPage(1)  //设置默认显示第1页
                        .onPageChange(new OnPageChangeListener() {
                            @Override
                            public void onPageChanged(int page, int pageCount) {
                                if (mPageTv != null && page > 0 && pageCount >= page) {
                                    mPageTv.setText(page + "/" + pageCount);
                                }
                            }
                        }) //设置翻页监听
                        .onDraw(new OnDrawListener() {
                            @Override
                            public void onLayerDrawn(Canvas canvas, float pageWidth, float pageHeight, int displayedPage) {
                                refreshPageView();
                            }
                        })
                        .onLoad(new OnLoadCompleteListener() {
                            @Override
                            public void loadComplete(int nbPages) {
                                mLoadComplete = true;
                            }
                        })
                        .showMinimap(false) //pdf放大的时候,是否在屏幕的右上角生成小地图
                        .swipeVertical(true) //pdf文档翻页是否是垂直翻页,默认是左右滑动翻页
                        .enableSwipe(true) //是否允许翻页,默认是允许翻页
                        .load();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 隐藏页数
         */
        Runnable hidePage = new Runnable() {
            @Override
            public void run() {
                if (mPageTv != null) {
                    mPageTv.setVisibility(View.GONE);
                }
            }
        };
    
        private void refreshPageView() {
            if (mPageTv != null && !mPageTv.isShown()) {
                mPageTv.setVisibility(View.VISIBLE);
            }
            if (handler == null) {
                handler = new Handler();
            }
            handler.removeCallbacks(hidePage);
            handler.postDelayed(hidePage, 3000);
        }
    }
    

    demo地址:https://download.csdn.net/download/qq_24179679/10554342

    展开全文
  • PDFview展示本地或网络PDF文件

    千次阅读 2017-04-20 09:04:39
    1.依赖jar包 compile 'com.github.barteksc:android-pdf-viewer:1.4.0' 2.xml布局 <com.github.barteksc.pdfviewer.PDFView android:id="@+id/pdfView" android:layout_width="match_parent

    1.依赖jar包

    compile 'com.github.barteksc:android-pdf-viewer:1.4.0'
    2.xml布局

      <com.github.barteksc.pdfviewer.PDFView
            android:id="@+id/pdfView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    <!--scrollBar可以配合PDFView下啦,可以不用-->
        <com.github.barteksc.pdfviewer.ScrollBar
            android:id="@+id/scrollBar"
            android:layout_width="1dp"
            android:background="#00000000"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />
    3.代码

    先将pdf文件下载到本地,然后打开

    pdfView.fromUri(uri)用法
    //获取到文件在本地存储的路径
    pdfName = Environment.getExternalStorageDirectory() +
            "/download";
    //testPic1.pdf为文件下载后的命名
    File file = new File(pdfName, "testPic1.pdf");
    Uri uri = Uri.fromFile(file);
    
    pdfView.fromUri(uri)
            .defaultPage(pageNumber)
            .enableDoubletap(true)
            .onDraw(this)
            .onPageChange(this)
            .enableAnnotationRendering(true)
            .onLoad(this)
            .enableDoubletap(true)
            .swipeVertical(true)
            .load();
    //另外一个用法
    pdfView.fromAsset("testPic1.pdf")
    .defaultPage(1)
    .onPageChange(MainActivity.this)
    .swipeVertical(true)
    .showMinimap(false)
    .enableAnnotationRendering(true)
    .onLoad(MainActivity.this)
    .load();

    记得添加权限
    1. <!--获取sd卡写的权限,用于文件上传和下载-->  
    2.    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
    3.    <!--允许读取手机状态 -->  
    4.    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
    5.    <!-- 在sdcard中创建/删除文件的权限 -->  
    6.    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  

    展开全文
  • Android PDF开发:android-pdfview

    万次阅读 2016-03-11 15:02:25
    Android PDF开发:android-pdfview Android平台自身没有直接可以阅读和处理pdf的方案,在github上面有一个第三方开源的pdf开发SDK,其主页地址是: https://github.com/JoanZapata/android-pdfview  android-pdf...
    Android PDF开发:android-pdfview


    Android平台自身没有直接可以阅读和处理pdf的方案,在github上面有一个第三方开源的pdf开发SDK,其主页地址是:

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

    android-pdfview使用比较简单,关键的地方是PDFView,将PDFView作为像Android的ImageView或者TextView一样写进xml布局文件:
    <FrameLayout 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" >
    
        <com.joanzapata.pdfview.PDFView
            android:id="@+id/pdfView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </FrameLayout>



    然后在Java上层代码直接加载pdf文件资源装载进去即可:

    package zhangphil.pdfview;
    
    import com.joanzapata.pdfview.PDFView;
    import com.joanzapata.pdfview.listener.OnPageChangeListener;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		PDFView pdfView = (PDFView) findViewById(R.id.pdfView);
    
    		// 在我这个测试例子中,事先准备一个叫做sample.pdf的pdf大文件放到assets目录下。
    		// 从assets文件目录下读取名为 sample.pdf的文件,缺省把该pdf定位到第一页。
    		pdfView.fromAsset("sample.pdf").defaultPage(1).onPageChange(new OnPageChangeListener() {
    
    			@Override
    			public void onPageChanged(int page, int pageCount) {
    				// 当用户在翻页时候将回调。
    				Toast.makeText(getApplicationContext(), page + " / " + pageCount, Toast.LENGTH_SHORT).show();
    			}
    		}).load();
    	}
    }
    



    我把该第三方开源库整理成Eclipse下可用的lib,上传到github上,地址链接:
    https://github.com/zhangphil/android-pdfview-lib-for-eclipse 
    使用时候,下载该lib,导入到eclipse作为lib,然后在项目中直接引用即可。
    展开全文
  • PDFView显示pdf文件

    2020-07-23 23:32:44
    PDFView显示本地或assets目录下的pdf文件(有源码有jar包)
  • Android 查看pdf文档——PDFView

    千次阅读 热门讨论 2016-11-10 15:17:25
    这里使用的是PDFView,是GitHub上面的一个开源项目点击查看项目这个项目是一个Android Studio的项目,我用的是ecplice但是也不妨碍使用,只需要自己新建一个项目将pdfview中的相关内容进行拷贝,之后设置Demo项目的...
  • android PDFview加载PDF&PDF加水印

    千次阅读 2019-03-05 16:34:22
    首先先看下效果图 ...下面使用PDFview来加载PDF,具体使用方法贴到下面 依赖 implementation 'com.github.barteksc:android-pdf-viewer:2.8.2' 别忘了加权限 本文是在android4.4上运行的demo,没...
  • 真正的破解版PDFView4NET

    热门讨论 2020-07-30 23:33:25
    想必大家都知道这个要怎么用就不多介绍了 在此重点鄙视此前在这里骗分的那些混蛋那个 教育版就来骗人 骗了老子40分
  • 最近在公司的项目中用到了一个小的功能,是关于加载一个本地用户隐私协议的pdf文件,加载pdf文件还是第一次遇到,以前也没做过,尝试着在网上找了一下,例子也比较多,我这里使用了PDFView,这是github上的一个开源...
  • Android PDFView

    千次阅读 2016-12-09 10:12:51
    大家好,又好久不见了,昨天有一个人说了一下pdfView,然后我很好奇,居然还有这个东西,之后上网看了下,并写下了一个demo。网上很多这样的例子,官方中给出来的也是这样的,但是还是写出来,以后自己用着比较方便吧...
  • android 自定义 PDF view

    千次阅读 2016-05-12 15:21:09
    前一段时间帮朋友做了一个在android 端查看PDF文档的功能,发现PDF文档的处理,网上资料有点混乱。研究了很长时间,也没有很好的成熟的方案。  针对这些文档的处理, 一定是有一些特殊需求的, 比如 实现画笔标注...
  • O2S.Components.PDFView4NET显示pdf(winform) 首先得把这个dll导入工具箱 选中该dll组件 按确定就多出来这些东西 然后再按确定,工具箱就有下面这些组件啦 2. 拉一个PDFpageview,和一个...
  • pdfview4net使用方式

    2019-04-19 15:25:37
    public partial class Form1 : Form { public Form1() { ...viewall(); } public void viewall() { PDFDocument da = new PDFDocument(); string path = Environment.CurrentDirectory + “\2019...
  • 首先要添加依赖 在Module 的build.gradle中添加下面的依赖compile 'com.github.barteksc:android-pdf-viewer:2.6.1' //还有更...com.github.barteksc.pdfviewer.PDFView android:id="@+id/pdf" andr...
  • android-pdfview框架下载链接一、下载android-pdfview框架 二、android studio项目集成android-pdfview 1、打开你需要集成的项目,在菜单选择file->New->Import Module 2、选择android-pdfview 3、在您...
  • com.github.barteksc.pdfviewer.PDFView pdfViewer.formFile("xxx.pdf") // 渲染风格(就像注释,颜色或表单) .enableAnnotationRendering(true)
  • 这说明要转换的pdf有问题。 解决方法: 对pdf文件进行修改( 不修改任何的内容),新建一个pdf与原pdf内容一致,重新转换即可。 详细的说明参见:  ...
1 2 3 4 5 ... 20
收藏数 65,656
精华内容 26,262
关键字:

pdfview