最近在做项目中遇到这么一个需求,客户想在线预览PDF合同,看似十分正常不过的需求,背后其实暗藏着许多坑,在踩完一个又一个的坑后,特在此处整理一下,仅供参考~首先是在网页中预览PDF的若干种形式。
工具/原料
embed
1、<embed></embed>在这次踩坑的过程中,html中有一个标签让我对ta又有了新的认识,那就是embed标签,(我称ta为曾经的王者),ta天生就带着多媒体的属性,ta真的几乎什么都可以加载,一个pdf文件而已,小case~,一个src赋值走起!!!
2、但话说会来,如果ta这么强,为什么没有上天呢?当然是有原因的啦。其一:加载的速度有点差,如果你的文件稍微大一点,页面就会陷入长期的一个停顿。如果你是以base64传输数据的,那等待时间会更长。
3、其二:兼容性对IE不太友好(呵呵),在IE中使用需要搭配object等一系列标签;移动端貌似对这个标签的支持很不友好。
iframe
1、接下来是使用iframe标签,这个”看不见的巨人",实力也是强的没话说,感觉整个世界都可以被ta加载到,加载一个pdf文件也是没有问题的啦。而且从加载的角度来说,也比embed标签流畅了不少。
2、但是一遇IE深似海,从此兼容是路人,iframe如果加载pdf,在IE中展示是烂瘀佐栾这样子的:没错,IE会提示你把ta下载下来,坑爹啊!!!,如果愿意下载,我要在线预览干嘛!!!(PS:虽然可以通过下载ADOBE READER解决这个问题,但是,你懂的~)
pdf.js
1、踩了前面的坑后,我找到了一款绝世插件pdf.js(ta的坑点后面慢慢聊),据说用过的都说好,看这名字,就是专门为预览pdf而生的。
2、按照教程配置好后,看看效果如何,主流浏览器基本通吃,OK,就决定是你啦!!!(ta的坑点,后面慢慢聊)