PDF.js直读Base64编码(间接解决跨域问题)

本文介绍如何利用PDF.js解决在IE浏览器中因跨域无法在线预览PDF的问题。通过将PDF的Base64编码与PDF.js结合,前端可以直接展示PDF,避免后端修改和代理。主要步骤包括:在前端页面插入viewer.html,修改viewer.html引入的viewer.js,将Base64码转换为Uint8Array,并替换默认加载的PDF文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先项目给别人外包做的,里面涉及到pdf在线阅览的功能,之前做的时候也一直都是在Chrome中看的,很简单,直接通过iframe就能够实现。。但是人家测试就要用IE做测试,问题就暴露出来了。阅览默认给下载了,微软都快放弃IE了,你还坚持个什么劲呢。所以只能通过第三方的插件来进行实现阅览了,这个时候就发现了PDF.js,基础的pdf.js引用的方式与使用我这里就不做介绍了,网上很多也基本都是一样的操作,搜一下就行了,我这里就说明一下我所遇到的问题与解决的方式。

网上写的方式

直接将文档承载在viewer.html上显示,但是这种方式存在一个问题,跨域不能够解析,这是什么情况呢,就是你的项目地址与你查看的附件地址不在一台服务器上,有的项目就是采用这种部署方式。所以这样就会导致跨域的问题。这里首先解释一下这个地址,因为之前看很多文章也没写,我可能也是理解能力比较差,也是看了一会才明白这个地址是啥。这里的地址其实就是你的项目部署之后的ip+端口+viewer.html地址。我这里使用的是Hbuilder x编辑器,所以运行的时候会默认给到一个ip+端口。然后我前面贴图的asd也是ip+端口+你要预览的pdf的地址。这个时候你只要能保证两个域名是相同的,就能够保证成功预览。但是如果两个域名不同,就会报跨域的错误。

我这边使用了只更改前端就能够解决跨域的问题(使用文档的base64与pdf.js结合进行展示),不用麻烦后端做更改,也不用给pdf在做一层代理以达到同域名的情况,个人认为还是一个比较好的解决办法,大概过程就是把base64码存入浏览器中,然打开承载pdf的viewer.html,在viewer.html

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值