android APP内显示PDF文件

来源:互联网 发布:hishop销客多源码 编辑:程序博客网 时间:2024/06/05 07:48

android APP内显示PDF文件

最近公司要做一个小功能,显示在APP内部显示pdf文件,刚接到任务感觉非常简单的一小功能,做的时候才发现在真的很不好实现。 因为android的webView与iOS的UIWebView不一样,不能够直接支持在线观看pdf文件,虽然谷歌官方给了个“http//docs.google.com/gviewembedded=true&url=”这样的解决方案,但是需要翻墙才能看。所以这种方法不可行。
经过调研发现目前只有三种方法接入到APP里面是没有问题的如下:
1.是接入第三方的jar包(如android-pdfview、AndroidPdfViewer 、PdfViewPager、MuPdf等)这里面接入到项目里增加APP体积最小的就属android-pdfview了,但是也是增加了4m左右,这还是我只加了arm和arm-v7a,但是这个jar包有个致命的大坑,就是不能播放带有超链接的pdf文件,会报类型转换错误的crash,这个是我项目快要上线才发现的问题,而且作者也停更了,网上没有好的解决方法,只能把源码导入到项目里在报错的位置作相应的处理才能解决,而且可能会导致pdf显示不出来。别的jar包都因为实在是太大了,考虑到APP的体积都放弃了。
2. 是我偶尔发现的官方的simple PdfRendererBasic这个主要是把pdf文件读出来把每一页ppt转成图片显示出来,不过这个每次只能显示一张,虽然可以做一个下一页按钮,但是实在是跟我的需求不符就也放弃了。
3. 接入pdf.js。这是个开源的把pdf转换成图片的工具,在网上有很多资料,但是大部分都是服务器解决的,官网上的例子也大部分都是用服务器解决的例子,android端可能用到的人很少,也没有详细的教程,其实很简单,主要是把pdf.js和pdf.worker.js这两个js文件考到你项目里的assets文件里面,然后在你的项目里直接用webview调用就好了。

final WebView webView = (WebView) findViewById(R.id.web_view);        WebSettings settings = webView.getSettings();        // 开启 javascript 功能;原因:站点采用了 javascript        settings.setJavaScriptEnabled(true);        // 这句解决本地跨域问题,如果你的 PDF 文件在站点里,是不需要的,但是,我们一般情况是加载站点外部 PDF 文件        settings.setAllowFileAccessFromFileURLs(true);        // demo code        /*         * "file:///android_asset/index.html?pdf="这里是固定的,指的是你项目里asset文件夹         * 取决于开发者自己目录名称         * 参数:pdf = 这里是 PDF 文件路径         * 这个路径有两种写法一种是file:///sdcard/+“文件路径”          * 第二种就是直接在代码里获取sd卡路径+“文件路径”         * 这里是直接在webview中加载JS文件。         */        runOnUiThread(new Runnable() {            @Override            public void run() {                webView.loadUrl("file:///android_asset/index.html?pdf=" + file.toString());            }        });

android基于pdf.js内部显示PDF文件demo

原创粉丝点击