前言
最近公司挺多我的项目应用了pdfjs-dist这个库来实现挪动端预览pdf,记录一下应用这个库外面的一些坑, pdfjs-dist 其实就是pdf.js,底层都是它,原本认为间接引入,调用一下就好了,可谁想到居然还有坑,差点是无奈填过去的那种!!!
坑1:无奈预览电子签章
问题形容
应用pdf.js来预览pdf,别的内容都能够展现,就是这个电子签章死活出不来,电子签章如下图:
问题起因
官网没工夫搞,我在官网的issue外面看到了很多对于这个issue的探讨,
- 还有说把源码的多少行给关上就好了的, 我感觉这个形式也是不靠谱,有趣味能够看看下文:
某個大佬的博客
掘金
解決辦法
官网自救!!! 10年了终于加上了,官网在2.9.359版本外面修复了,十年了,你晓得我都经验了什么
- 官网issue
坑2: globalthis is not defined
原本认为高高兴兴上线就完了,可谁晓得某一天在监控平台上看到了globalthis is not defined 这个错,而且还挺多的, ,不能欢快的搬砖了,而且这玩意听都没听说过,,老规矩,不懂就谷歌一下,代码都是cv的,全靠大佬们了
问题形容
- 以后我的项目pdf的版本是 "pdfjs-dist": "2.13.216"
- 另外两个我的项目的pdf版本 "pdfjs-dist": "2.0.943"
- 只有"pdfjs-dist": "2.13.216"这个版本会挂了,凉凉, "pdfjs-dist": "2.0.943"这个版本是2018年10月份公布的,这个版本没有问题,居然是能够的,搞事件哈!!!
- 报错的浏览器版本,谷歌版本68,相当老了
报错起因
查看globalThis 兼容性,这货色在谷歌71版本和苹果浏览器 12.1 后才反对,问题很显著了,报错的浏览器版本是68,不报错才怪了 就是globalThis的兼容性问题
- globalThis mdn
解决办法
方法1:这个亲测也能够的,看大佬们喜爱那个就撸那个咯
var getGlobal = function () { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } throw new Error('unable to locate global object');};var globalThis = getGlobal();
方法2:反正这个globalThis 在浏览器环境就是指向window,直接判断一下,让他等于window不就好了,这种亲测也能够
// 因为应用了pdf.js 来做预览pdf,它的源码外面有应用了globalThis这个货色,这个货色的兼容性是谷歌71版本以上和苹果浏览器12.1 以上,有兼容性问题,做个判断解决一下 try { if(!window.globalThis){ var globalThis = window } } catch (error) { console.error('globalThis 问题重现,请火速反馈给客服!!!', error) }
附送如何应用低版本调试的办法
同一操作系统装置多个不同版本谷歌chrome浏览器
结束语
- 本文如有谬误,欢送斧正,非常感谢
- 感觉有用的老铁,点个双击,小红心走一波
- 欢送灌水,来呀,相互挫伤哈 o(∩_∩)o 哈哈