后端返回的pad文件流 预览不显示文字
getPdfData().then(res => {
return res.json(); //返回的base64的字符
}).then(res => {
let base = Base64.decode(res.retObj)
console.log(base);
const blob = new Blob([base], { type: 'application/pdf;chartset=UTF-8' })
const url = window.URL.createObjectURL(blob)
return url
})
问题出在数据从服务器传递到客户端的某种方式上。确保服务器以Base64编码发送数据至关重要,否则客户端无法将PDF字符串反序列化为二进制格式。下面
具体参考:
我是用ifream直接显示pdf的,下载的话可以创建一个a标签
let binaryString = window.atob(res.retObj);
let binaryLen = binaryString.length;
let bytes = new Uint8Array(binaryLen);
for (let i = 0; i < binaryLen; i++) {
let ascii = binaryString.charCodeAt(i);
bytes[i] = ascii;
}
let blob = new Blob([bytes], {type: "application/pdf"});
return window.URL.createObjectURL(blob);
可以参考https://www.jianshu.com/p/242525315bf6
请求设置responseType:"multipart/form-data",
返回时
var binaryData = [];
binaryData.push(data.data);
const blob = new Blob(binaryData, { type: 'application/pdf;chartset=UTF-8' })
const url = window.URL.createObjectURL(blob)
return url
有用的话请给个采纳
不知道你这个问题是否已经解决, 如果还没有解决的话:最近承接了一个需求,需要在H5页面移动端实现手滑动上移动,下滑下移动,我一看就用到了滑动的三个事件touchstart
、touchmove
、touchend
,顾名思义,touchstart
就是滑动起始的触发事件,touchmove
就是滑动时的触发事件,touchend
就是脱离滑动的触发事件