我们要做一个新产品,产品设计里需要在微信浏览器里实现PDF的预览、下载和分享。

过程

首先,类似PDF这类资源的展示,第一个想到的是使用<embed>标签,我新建了个html,里面放入<embed>标签,先在本地Google打开了一下,展示PDF完全没问题。

HTML 元素将外部内容嵌入文档中的指定位置。此内容由外部应用程序或其他交互式内容源(如浏览器插件)提供。

这首先证明我的代码是没有错的,下面就该在真机上验证了。

然后我用链接转二维码的工具把这个链接转成了二维码,发现在手机上没有访问到这个页面。这时我才想起来这个页面是本地的,其他设备是访问不到的。

于是,我在项目里切了一个临时分支,把这个页面放到项目里,然后启动了项目,在手机微信浏览器里访问了一下,结果直接跳到了下载QQ浏览器的界面(我的手机是华为)。。。

我郁闷了,这是个什么鬼,又拿来了一部iPhone测试机,在微信里打开了这个页面,发现PDF在页面里打开了。。

原来在安卓上<embed>标签是不支持直接打开资源的,在ios上是可以的。

既然<embed>标签不行,那就去网上查查看有没有其他办法呗。。

另外又在网上查到了<iframe><Object>这两个标签的实现,但是也失败了,结果和<embed>标签一样。

结论

  1. 开发一款APP,可以支持预览、下载和转发;
  2. 开发一款小程序,支持预览和下载,不支持转发;
  3. 添加指导页,指导用户到其他浏览器中打开,支持下载,不支持转发,预览可将文件转成图片格式代替。