pdf预览在vue项目中的使用兼容ie浏览器

最近做项目有需求需要pdf在线预览并支持下载,而且还要兼容ie浏览器,之前又是使用过vue-pdf插件在chrome上没有问题但是在ie上不兼容。最后使用了pdf.Js这个原生库,虽然网上有许多使用教程但是还是踩了不少坑,所以在此记录下来。

一、下载pdf.js这个插件

 链接: https://pan.baidu.com/s/1RVeDiPQKG4GfBNbwc_fqqQ 提取码: 4dgg

 也可以在官网上下载或者在github上下载(官网上贼慢)

二、将下面两个文件复制到项目中

需要找到build和web这两个文件夹放在项目的public下(使用的是vue-cli3)

在这里插入图片描述

三、直接可以在项目中使用了不需要额外的引入

有三种方式可以预览pdf,都需要注意路径问题:

pSrc为预览pdf的完整路径:
第一个红色框里面为 打开pdf.js的地址需要根据自己放置文件的地址进行修改。
第二个红色框内为需要预览的pdf的完整地址,需要使用pdf自带的方法encodeURIComponent()进行解析。
在这里插入图片描述
路径处理完,就可以根据自己的情况使用下面三种方法进行预览了

1、使用iframe标签直接引入

在这里插入图片描述

2、使用a标签在本页面直接预览

在这里插入图片描述

3、使用window.open打开新的页面进行预览

在这里插入图片描述

预览效果如图:

在这里插入图片描述

四、遇到的问题

1、 在pdf预览的时候可能会存在跨域问题

这个问题我没有遇到但是看到别的小伙伴有遇到这个问题,所以说下看到的解决办法吧:

找到复制pdf的文件夹web下的viewer.js 然后找到下图中的代码直接注释掉就可以了
在这里插入图片描述

2、ie浏览器不兼容问题

在这个问题上浪费了不少时间,我们后端给返回的是文件流的形式,直接使用上面的方法进行预览,在Chrome和其他浏览器上都可以正常预览,但是在ie浏览器上有时候可以打开,更多的时候会报下图中的错误,预览失败,在网上也搜索到了有小伙伴遇到这个问题但是没有解答,试了好多方法都不好使(包括让后端返回流时添加文件类型的标识),最后偶然发现一个博主的git的案例找到了解决方法.

猜测原因是因为后端返回的流ie浏览器因为某些原因老是解析失败.

在这里插入图片描述

解决办法: 直接返回文件在服务器中存放的地址,可以在浏览器中直接访问的url就可以了.

3、预览文件title标题标题问题

因为后端查找在服务器上的文件是id的地址,所以预览的时候自动换的就是id值或者是undefined,现在手动添加预览文件名

问题如下图所示:

在这里插入图片描述

解决方法:

步骤1
找到viewer.js中的代码进行改动如下图:

解析预览地址中faleName的参数。

在这里插入图片描述

步骤2
因为修改了解析url中的faleName字段所以我们在代码中的预览地址直接加上这个参数字段并且把返回来的文件名拼接上就可以了。如下图:

在这里插入图片描述

解决后的效果如下图:

在这里插入图片描述

最后放上那位博主的git地址链接:https://github.com/goSunadeod/vue-pdf.js-demo

大家作为对照参考,如果有帮助到你,给那位博主支持一下。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果IE浏览器的网页链接无法打开,可能由于以下几个原因: 1. 防火墙或杀软拦截:检查是否安装了防火墙或杀软,可能它们会拦截某些网页链接。关闭防火墙或杀软试试。 2. 网页链接错误:检查链接是否正确,可能链接地址有误或者网页已失效。可以尝试在其他浏览器打开链接来确认问题出在IE上还是链接自身有问题。 3. IE设置问题:检查IE浏览器的设置项。点击浏览器右上方的“齿轮”图标,在下拉菜单选择“Internet选项”。在打开的对话框,点击“高级”选项卡,然后找到“恢复高级设置”按钮,点击进行重置。重新启动IE浏览器,再次尝试打开链接。 4. 插件或扩展问题:某些插件或扩展可能会干扰网页的正常加载,尝试禁用它们。点击浏览器右上方的“齿轮”图标,在下拉菜单选择“管理附加组件”,在打开的对话框禁用所有插件和扩展。然后重新启动IE浏览器,再次尝试打开链接。 5. 修复或重新安装IE浏览器:如果以上方法都没有解决问题,可以尝试修复或重新安装IE浏览器。控制面板的“程序”或“卸载程序”找到IE浏览器,选择修复或卸载后重新安装。请注意,重新安装可能会导致个人浏览器设置和书签的丢失,进行备份后再操作。 如果上述方法仍然无法解决问题,可能需要进一步检查系统或寻求专业技术支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值