本文目录一览:
- 1、android pdf如何实现发大后下一页
- 2、pdf.js可以用到移动端吗
- 3、pdf.js 在安卓手机uc浏览器不支持在线预览
- 4、vue-pdf 预览乱码问题
- 5、自定义微信分享链接(使用JS-SDK) + 实现预览pdf
android pdf如何实现发大后下一页
是接入第三方的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调用就好了。
详细
pdf.js可以用到移动端吗
可以。但消耗内存太大,h5页面需要植入到app里面去,ios的打开没有问题,安卓打开会闪退,有没有其他适用于移动端的h5预览pdf的js插件
pdf.js 在安卓手机uc浏览器不支持在线预览
①塞班版UC浏览器:目前塞班平台是暂时不支持JavaScrip的;
②安卓版UC浏览器:是支持javascript的,此功能是默认开启的,没有开关。
vue-pdf 预览乱码问题
我遇到过以下两种情况的乱码,都是h5(我的项目是嵌入到钉钉内部的,具体网页版没有测试过):
1、苹果手机正常显示;安卓手机只能显示部分汉字,字母数字都正常。
2、部分pdf文件苹果手机、安卓手机都不显示汉字,乱码。
(备注:这里提一下我的vue-pdf版本是4.1)
1、找到安装的依赖文件夹vue-pdf,把node_modules vue-pdf src pdfjsWrapper.js替换为以下文件内容:
1、引入CMapReaderFactory.js(这个文件也在node_modules vue-pdf src下) 备注:不用关注,只是提一下
2、在执行 pdf.createLoadingTask 方法的时候加入 CMapReaderFactory ,(我的vue-pdf基本用法里有写) pdf的基本用法,点击这里
自定义微信分享链接(使用JS-SDK) + 实现预览pdf
可参考:微信JS-SDK说明文档
此时可能出现白名单错误(忘截图了),需要在微信公众号中设置错误中的IP
注意:access_token和ticket都需要缓存
4. 获取签名 signature
将以上内容以键值对形式拼接,类似如下
本地引入sha1算法(需网上查找)
将上述拼接的字符串以参数的形式传递到sha1中得到 signature
signature = sha1(拼接完的字符串)
验证 signature 是否正确
将appId,nonceStr,timestamp和signature返回给前端
官网上是这样描述的:
这时候调用 updateAppMessageShareData , updateTimelineShareData 的时候就可以生效了,具体原理不清楚。。
注意:imgUrl配置有严格的要求
尺寸120 x 120,大小不超过10K,不支持GIF格式。必须采用https协议(最好写完整url),不支持base64。由于我使用的是vue,在webpack打包时图片小于10k的是会自动打包成base64导致无法正常显示图片,因此在webpack.base.config.js中修改默认配置
由于在网页中直接查看pdf的路径是无法在微信中查看(安卓)和分享(ios),因此使用pdf插件进行优化 --- pdf.js 。其原理是绘制成canvas,最终在真机上放大时可能出现模糊的问题。
创建之后控制台会报错出现跨域问题,因为pdf.js不支持跨域访问。此时可以将错误跨域信息在上一步你引入的文件中查找,然后将其判断语句注释掉即可解决这个问题。最后会发现pdf出现在这个容器中(忘截图了),也实现了微信中预览和分享的功能。