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
- android APP内显示PDF文件
- android 显示 PDF 文件
- android 显示 PDF 文件
- Android开发:显示PDF文件
- android 显示pdf文件内容
- android 显示pdf文件内容
- android webView显示PDF文件
- Android内嵌MuPDF打开PDF文件
- Android应用内在线查看PDF文件
- Android显示PDF文件之PDFviewer
- Android显示PDF文件之iText
- Android读取pdf文件及显示
- android开发仿照第三方app打开方式,如何将你的app显示在打开列表,并且将文件复制到你的app应用内
- Android应用内展示word、excel、pdf、ppt等文件
- 显示/下载PDF文件
- C#显示PDF文件
- C#显示PDF文件
- winform 显示PDF文件
- 浅谈Html的内容加载及JS执行顺序
- 01串 (南阳理工oj 题目252)
- Oracle 12c创建用户和切换CDB、PDB
- redis
- vue.js数据绑定
- android APP内显示PDF文件
- 关于Linux 线程pthread_join的用法
- leetcode--Reverse Linked List
- Spark Streaming实例
- 6.mysql
- 游戏服务器架构的演进简史
- springcloud(一):大话Spring Cloud
- UTF-8编码时,PHP如何正则匹配中文汉字?亲测可用
- python django 多级业务树形结构规划及页面渲染 概述: 在项目中,父级到子级结构并不少见,如果仅仅的两层树形结构,我们可以使用数据库的外键设计轻松做到,子级业务表设计一字段外键到父级