pdf+iphone+wechat
可能很多人要问,为啥标题取这个名字。
因为今天在这个上面踩了太多坑。。
我们的需求其实很简单。做一个页面,把pdf文档嵌进去,在线显示。
如此需求,放在PC上chrome浏览器,一个embed标签就搞定了。可是碰到上面三个组合,就SB了。。
主要就是三个坑:
1)pdf在safari中,如果采用embed标签内嵌入html,那么只能显示第一页,剩下的无法显示,更无法用滚动的方式查看。
2)通过使用微信扫一扫功能,获得的网址腾讯会进行安全性检查,只有正式备过案的域名才可以直接跳转显示。但是,我们的视频,音频,文档等资源都存放在AWS的S3上面。因而不能直接跳转到这些资源的S3链接上。必须要通过一个html页面进行封装,只要封装的html网页的域名是备过案的,那么就不会被腾讯审核。后来经过试验,发现mp4,mp3,jpg等常见媒体资源可用这种方式逃过检查,但是pdf这种资源通过embed标签内嵌的时候仍旧会触发微信的检测机制。可能是因为pdf需要调用浏览器显示插件,额外触发了微信的二次审核。
3)pdf文档的链接必然被微信的审核。表面上看,所谓审核就是弹出一个页面,提示“非微信官方网页 转换为手机预览模式”。如果点击确定,那就跳转到目标网页。问题就出在这儿,跳转之后并不是简单的跳转,而是在原来的url后面加了一个nsukey这么一个参数。为了防止资源盗链,我们对s3的链接做了签名处理,这下无故多出一个get请求参数,签名被破坏,以致于无法访问到对应的资源。坑爹!
万般无奈之下,只能做一个页面,提示用微信扫描二维码进入该页面的用户,用其他浏览器打开该网站,然后直接访问我们提供的经过签名的原始资源链接。如此一来,浏览器便能正确完整打开pdf文档了。
pdf+iphone+wechat的更多相关文章
- 怎么把电脑的word,txt,pdf等文件拷贝到iPhone手机上
之前都是用的qq什么的传文件,电脑发送到qq上.今天尝试了一下用itunes把电脑上的文件夹弄到iPhone上. 1.首先,打开电脑的偏好设置,找到共享如图: 打开它,勾选文件共享. 2.把手机和电脑 ...
- iphone的ibooks如何导入pdf?
使用QQ把pdf文档从电脑上发到手机上,使用手机的QQ打开文档,在手机QQ上,用其他应用打开文档,选择‘拷贝’到ibooks
- iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2014年2月19日更新版)
//转载请注明出处--本文永久链接:http://www.cnblogs.com/ChenYilong/p/3496069.html 编号 iOS-Apple苹果官方文档翻译名称 博文链接地址 ...
- iphone之打开pdf、doc、xls文件用UIWebView
//文件名字及类型 NSString *path=[[NSBundle mainBundle]pathForResource:@"xls1" ofType:@"xls&q ...
- 移动端嵌入pdf.js远程请求pdf出现(206)
最近在做移动端的开发,需要嵌入pdf进行预览.看了很多的js组件后选择了pdf.js:使用起来还是比较方便的,至于使用网上有很多的教程. 但在使用过程中出现了如下一个问题(我做的是IOS系统): 问题 ...
- 实战动态PDF在线预览及带签名的PDF文件转换
开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是这个想法,说干就干,实践过程总是艰难的,折腾了3 ...
- iPhone被盗后怎么?这篇文章只办针对iOS7后的系统
中午准备去吃饭的时候,今天看到Tungbaby的手机被盗后怎么做?http://www.jianshu.com/p/f13f49cd9b90 碰巧我的手机也被盗了.就来分享下我的经验吧.由于我当时是在 ...
- pdf.js pdfdom.js使用(转)
开篇语: 最近工作需要做一个借款合同,公司以前的合同都是通过app端下载,然后通过本地打开pdf文件,而喜欢创新的我,心想着为什么不能在线H5预览,正是这个想法,说干就干,实践过程总是艰难的,折腾了3 ...
- iPad和iPhone开发区别
原文:http://mobile.51cto.com/iphone-273895.htm iPad与iPhone 开发区别详解是本文要介绍的内容,先来看看他们的区别. 1.首先我们先从官方发布的SDK ...
随机推荐
- java_es
在查询时过滤掉指定的"_id"的数据 GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();// 对 ...
- linux常见命令集合(下)
1. tar zcvf backup-$(date "+%Y-%m-%d").tar.gz demo01dir 常用命令集合 echo helloworld date “+%y-% ...
- Codeforces Round #299 (Div. 1) A. Tavas and Karafs 水题
Tavas and Karafs Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/536/prob ...
- Linux使用C语言链接MsSQL
1.安装gcc编译器 yum install gcc 2.下载freetds wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched ...
- 破解MyEclipse2015 stable3.0(亲测可用)
整个破解过程最好断网: 1.安装好MyEclipse2015 stable3后,打开设置好工作目录后,退出.2.将plugins文件夹中的文件拷贝到myeclipse安装目录的plugins文件夹下, ...
- mui 图片预览
1. 图片放大滑动预览需要 mui.zoom.js mui.previewimage.js 2. 调用 mui.previewImage(); 3. 滑动过程中禁止图片缩放 注释掉下面代 ...
- JVM调优总结 -Xms -Xmx -Xmn -Xss等
首先介绍一下新生代.老年代.所谓的新生代和老年代是针对于分代收集算法来定义的,新生代又分为Eden和Survivor两个区.加上老年代就这三个区.数据会首先分配到Eden区 ...
- TurboLinux11system»adjtimex简介
Adjtimex介绍 linux 系统有两个时钟:一个是由主板电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟.当操作系统关机的时候,用这个来记录时间,但是对于运行 ...
- pytest文档2-用例运行规则
用例设计原则 文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类 以test_开头的方法 所有的包pakege必须要有__init__.py文件 help帮 ...
- SQL中关于where后面不能放聚合函数(如sum等)的解决办法
我们在编写较为复杂的SQL语句的时候,常常会遇到需要将sum()放到where后面作为条件查询,事实证明这样是无法执行的,执行会报[此处不允许使用分组函数]异常. 那么如何解决呢,使用HAVING关键 ...