pdf 预览 打印
2023-10-23 本文已影响0人
云高风轻
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("数据解析失败");;
}
},