<iframe
:src="pdfUrl"
style="border: none; width: 100%; height: calc(100% - 10px)"
frameborder="0"
>
iframe是一个非常好用的标签,用于文件的展示
src地址可以一个访问后端的一个地址(https://mp.csdn.net/mp_blog/creation/editor/new?spm=1000.2115.3001.4503),也可以是本地的文件就是一个文件地址(/src/assets/数据.pdf)
展示出来是这个样子的,自带工具栏,也可把工具栏给隐藏掉,具体做法下面介绍
现在开发遇到一个问题,如果直接地址访问的话,请求后端接口没有携带token
需要请求接口携带token,我们拿到的是数据流,记得请求接口类型改为
responseType = 'blob'
我们拿到的是数据流需要使用createObjectURL读取出url
temperatureService.getTemperaturePdf(params).then((response) => {
let blob = new Blob([response])
pdfUrl.value = URL.createObjectURL(blob) + '#toolbar=0'//加上'#toolbar=0'隐藏工具栏
loading.value = false
})
这样创建的blob类型是txt/html,可以打印出来看看,这样展示出来是乱码,我看了一些控制台,能成功展示的控制台的类型是 application/pdf,代码做如下更改即可
temperatureService.getTemperaturePdf(params).then((response) => {
let blob = new Blob([response], { type: 'application/pdf' })
pdfUrl.value = URL.createObjectURL(blob) + '#toolbar=0'
loading.value = false
})