vue接收后端传来的pdf文件流,前端调用预览PDF

我的业务场景是需要解析后端的PDF文件流,然后预览最后可以打印出来就完事!
完全不需要插件几句代码就搞定了,这里就不废话了直接上代码!
在这里插入图片描述
在这里插入图片描述
直接起飞!!!懂得都懂香就完事!有问题评价

export function getFile(id) {
    return request({
        url: 'api/File/Download?id=' + id,
        method: 'get',
        headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
        responseType: 'arraybuffer',   //一定要设置响应类型,否则页面会是空白pdf
    })
}
 Service.getFile('f73a66091a124b338205c16389841487').then(result => {
        //const binaryData = [];
        //binaryData.push(result);
        //console.log(binaryData);
        //获取blob链接
        // var pdfUrl = window.URL.createObjectURL(new Blob(binaryData, { type: 'application/pdf' }));
        // window.open(pdfUrl);

		  const binaryData = [];
          binaryData.push(result.data);
          //获取blob链接
          let pdfUrl = window.URL.createObjectURL(
            new Blob(binaryData, { type: "application/pdf" })
          );
          if (pdfUrl) {
            this.handlePrint(pdfUrl);
          }
      })

增加一个在本页直接跳出打印的方法

handlePrint(pdf) {
      if (document.getElementById("print-iframe")) {
        document.body.removeChild(document.getElementById("print-iframe"));
      }
      //判断iframe是否存在,不存在则创建iframe
      let iframe = document.getElementById("print-iframe");
      if (!iframe) {
        iframe = document.createElement("IFRAME");
        let doc = null;
        iframe.setAttribute("src", pdf);
        iframe.setAttribute("id", "print-iframe");
        document.body.appendChild(iframe);
        doc = iframe.contentWindow.document;
        doc.close();
        iframe.contentWindow.focus();
      }
      iframe.contentWindow.print();
    },
  • 15
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值