1. 前言
- 预览和打印其实一样
2. 首先注意请求头这块的配置
export function handPrint(data) { return request({ url: CommonDataAPI.XXurl, method: "get", params: data, responseType: "blob" }); }
responseType: "blob"
- 具体和自己的服务器人员沟通
3. pdf预览
- PDF预览 打开新页面 二进制文件流
pdfViewBlob(res, fileName) { if (!res.data || res.data.size == 0) { newMessage.error("解析数据为空!"); return; } if (isIE()) { // 如果是ie浏览器下载到本地 let blob = new Blob([res.data], { type: "application/octet-stream;charset=utf-8", }); window.navigator.msSaveOrOpenBlob(blob, fileName); } else { // 如果不是ie浏览器,新窗口打开预览文件,自行下载 let pdfUrl = ""; const binaryData = []; binaryData.push(res.data); //获取blob链接 pdfUrl = window.URL.createObjectURL( new Blob(binaryData, { type: "application/pdf" }) ); let newWindow = window.open(); newWindow.location.href = pdfUrl; } },
4. 打印
// 打印 async handlePrint(row) { let vm = this; let params = { key:val, } const res = await handPrint(params); if (!(res && res.data)) { return this.$message.error("数据获取失败"); } if (res.status == 200) { let fileReader = new FileReader(); fileReader.readAsText(res.data); fileReader.onload = function (result) { try { let jsondata = JSON.parse(result.target.result); if (jsondata.code != 0) { vm.$message.error(jsondata.msg); return; } } catch { // vm.$printFn.pdfViewBlob(res, fileName + ".pdf"); vm.$printFn.pdfViewBlob(res, "xxx.pdf"); } }; } else { // this.$message.error("数据解析失败");; } },