android webview PDF.js 打开sd卡中的pdf文件,在无数个坑中爬过。

1 篇文章 0 订阅

一、下载PDF.js放在assets目录下

.打开修改viewer.js文件中的DEFAULT_URL的值设为空字符串‘’

二、简单粗暴直接上代码

activity_showpdf.xml

<ProgressBar
        android:id="@+id/pb_pdf"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="fill_parent"
        android:layout_height="8dip"
        android:indeterminateOnly="false"
        android:max="100"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <WebView
            android:id="@+id/wv_pdf"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </LinearLayout>

ShowPDFActivity.java

//声明
private WebView webview;
    private WebSettings webSettings;
    private TextView tv_title;
    private ProgressBar pb;

实现打开pdf 

webview = findViewById(R.id.wv_pdf);
        pb = findViewById(R.id.pb_pdf); pb.setMax(100);
        tv_title = findViewById(R.id.tv_title);
        webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webSettings = webview.getSettings();
        webSettings.setAllowFileAccessFromFileURLs(true);
        webSettings.setAllowUniversalAccessFromFileURLs(true);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAllowFileAccess(true);
        // 设置可以支持缩放
        webSettings.setSupportZoom(true);
        // 设置出现缩放工具
        webSettings.setBuiltInZoomControls(true);
        //设置可在大视野范围内上下左右拖动,并且可以任意比例缩放
//        webSettings.setUseWideViewPort(true);
        //设置默认加载的可视范围是大视野范围
//        webSettings.setLoadWithOverviewMode(true);
        //自适应屏幕
        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        webSettings.setTextZoom(100);
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
        });
        //设置WebChromeClient类
        webview.setWebChromeClient(new WebChromeClient() {
            //获取网站标题
            @Override
            public void onReceivedTitle(WebView view, String title) {
                tv_title.setText(TITLE);
            }
            //获取加载进度
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                pb.setProgress(newProgress);
                if(newProgress==100){
                    pb.setVisibility(View.GONE);
                }
                super.onProgressChanged(view, newProgress);
            }
        });
        String url = Environment.getExternalStorageDirectory().getPath() + "/"+ CommonConstants.CURR_PAKAGE + "/plan/"+
                filename;
        webview.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=file://"+url);

最后要在activity的onDestroy销毁Webview

protected void onDestroy() {
        if (webview != null) {
            webview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
            webview.clearHistory();
            ((ViewGroup) webview.getParent()).removeView(webview);
            webview.destroy();
            webview = null;
        }
        super.onDestroy();
    }

重点webview.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=file://"+url);

网上的例子都是webview.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file="+url);

三、按上述方式成功显示PDF文件,但是不能缩放

修改viewer.html的头部,修改如下

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值