Android使用js方案实现在线浏览pdf文档
2017-12-20 11:27
786 查看
由于公司在项目中新增一个开发票的功能,而从第三方返回的数据(文档所在服务器地址,即一个url)来看,既有图片格式,也有PDF格式,因此需要在项目中实现查看PDF文档的功能。
从目前的实现方案来看,分别有以下几种:
一、先将远程服务器的pdf文档下载到本地,然后在本地中进行操作,但是考虑到这样做体验不大好,因此排除了;
二、使用第三方库的实现:https://github.com/barteksc/AndroidPdfViewer,但是使用该库,一下子项目会增大16MB左右,至于原因,文档中有解释,感兴趣的童鞋可以去看看;
三、使用webview的方式配合JS实现,目前网上成熟的方案Mozilla(火狐)的pdf.js,这种方式也可以浏览本地pdf文档。因此,这篇文章讲的就是怎么把这种方案集成到android项目中。
1、到Mozilla pdf.js的官网下载最新的稳定版本
2、解压下载后的压缩文件,将解压后的文件夹整份粘贴到项目中的asset文件夹下(记得解压后改成一个合法的名称)
3、在所要展示pdf文档的页面对web进行代码配置
其中,pdfViewWeb是webview对象,docPath则是远程服务器上的pdf文档地址。
需要对上段代码说明的是,我在手机上试验了下,最新版本的pdf.js在android4.3以上显示都是正常的,在4.3的系统上(android4.3以下的系统我没测试)则无法正常显示,因此我做了兼容,android4.3及以下的系统都是用pdf.js v1.4.20的版本,添加过程也和最新版本(v1.9.426)一样,进一步说明的是,这样做以后,打出来的apk大小也增大了4MB多左右。
资源下载地址
从目前的实现方案来看,分别有以下几种:
一、先将远程服务器的pdf文档下载到本地,然后在本地中进行操作,但是考虑到这样做体验不大好,因此排除了;
二、使用第三方库的实现:https://github.com/barteksc/AndroidPdfViewer,但是使用该库,一下子项目会增大16MB左右,至于原因,文档中有解释,感兴趣的童鞋可以去看看;
三、使用webview的方式配合JS实现,目前网上成熟的方案Mozilla(火狐)的pdf.js,这种方式也可以浏览本地pdf文档。因此,这篇文章讲的就是怎么把这种方案集成到android项目中。
1、到Mozilla pdf.js的官网下载最新的稳定版本
2、解压下载后的压缩文件,将解压后的文件夹整份粘贴到项目中的asset文件夹下(记得解压后改成一个合法的名称)
3、在所要展示pdf文档的页面对web进行代码配置
WebSettings settings = pdfViewerWeb.getSettings(); settings.setSavePassword(false); settings.setJavaScriptEnabled(true); settings.setAllowFileAccessFromFileURLs(true); settings.setAllowUniversalAccessFromFileURLs(true); settings.setBuiltInZoomControls(true); pdfViewerWeb.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); pdfViewerWeb.setWebChromeClient(new WebChromeClient()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//api >= 19 pdfViewerWeb.loadUrl("file:///android_asset/pdfjs/web/viewer.html?file=" + docPath); } else { if (!TextUtils.isEmpty(docPath)) { byte[] bytes = null; try {// 获取以字符编码为utf-8的字符 bytes = docPath.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if (bytes != null) { docPath = new BASE64Encoder().encode(bytes);// BASE64转码 } } pdfViewerWeb.loadUrl("file:///android_asset/pdfjs_compatibility/web/viewer.html?file=" + docPath); }
其中,pdfViewWeb是webview对象,docPath则是远程服务器上的pdf文档地址。
需要对上段代码说明的是,我在手机上试验了下,最新版本的pdf.js在android4.3以上显示都是正常的,在4.3的系统上(android4.3以下的系统我没测试)则无法正常显示,因此我做了兼容,android4.3及以下的系统都是用pdf.js v1.4.20的版本,添加过程也和最新版本(v1.9.426)一样,进一步说明的是,这样做以后,打出来的apk大小也增大了4MB多左右。
资源下载地址
相关文章推荐
- (三)java实现文档的在线浏览-使用JODConverter将office文档转换为pdf
- android和JS交互,相互调用方法传值。不使用第三方实现原生加载word、ppt、pdf文档
- (四)java实现文档的在线浏览-使用swftools将pdf转换为swf
- vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
- vue插件开发 使用pdf.js实现手机端在线预览pdf文档
- asp.net结合flashpaper实现doc/pdf/ppt文档在线浏览
- PDF文档在线浏览防下载加密方案
- flex实现百度库文浏览文档使用word文档转pdf然后再用pdf转swf最后flex页面使用flexpaper显示文库数据
- Android 使用ViewPager结合PhotoView开源组件实现网络图片在线浏览功能
- Android实现在线预览office文档(Word,Pdf,excel,PPT.txt等格式)
- Word,Excel,Powerpoint,Txt,Pdf 等文档的在线浏览的实现
- Android 使用PDF.js浏览pdf的方法示例
- (五)java实现文档的在线浏览-转换pdf的同时转为swf
- vue中引用pdf.js,实现在线浏览禁止下载、打印的功能
- pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现
- 在禅道中实现WORD等OFFICE文档转换为PDF进行在线浏览
- pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现
- PDF.js插件的使用--在线浏览PDF文件
- pdf.js可以实现在html下直接浏览pdf文档
- java 使用 pdf.js 在线查看 pdf 文档