vue base64文件转pdf

//best64转Blob
const dataURLtoBlob = function (baseData) {
  var bstr = atob(baseData)
  var n = bstr.length;
  var u8arr = new Uint8Array(n);
  while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
  }
  return new Blob([u8arr], { type: `application/pdf;charset-UTF-8;application/vnd.ms-excel` });
};

// 下载pdf
// baseData是后端传来的base64,fileName是文件名
export function fileDownload(baseData, fileName) {
  let URL = dataURLtoBlob(baseData.substring(baseData.indexOf(',') + 1));
  var reader = new FileReader();
  reader.readAsDataURL(URL);
  reader.onload = function (e) {
    // 兼容IE
    if (window.navigator.msSaveOrOpenBlob) {
        var bstr = atob(e.target.result.split(",")[1]);
        var n = bstr.length;
        var u8arr = new Uint8Array(n);
        while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
        }
        var blob = new Blob([u8arr]);
        window.navigator.msSaveOrOpenBlob(blob, fileName);
    } else {
        // 转换完成,创建一个a标签用于下载
        const a = document.createElement('a');
        a.download = fileName; // 这里写你的文件名
        a.href = e.target.result;
        document.body.appendChild(a)
        a.click();
        document.body.removeChild(a)
    }
  }
}

特别注意:有时候后端返回的base64数据自带了前缀data:application/pdf;base64,

如果 不去掉这个前缀 会报 failed to execute 'atob' on 'window': the string to be decoded is not correctly encoded. 这个错误。处理方式如下:

let URL = dataURLtoBlob(baseData.substring(baseData.indexOf(',') + 1));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值