PDF预览问题
garvin 5/24/2022 React QS
# react的文件预览插件react-pdf | react-file-viewer 都是基于pdf.js封装 预览pdf不清楚, docx很清楚
- 注意 需要设置 responseType: 'blob' 不然请求的文件流内容缺失
- url 后添加 '#toolbar=0' 隐藏操作栏
- 响应头的 content-type: application/octet-stream 或者content-type: application/pdf 都可以预览 最好octet-stream文件流,下载直接用file-saver插件
- 常见MIME类型列表 (opens new window)
import {saveAs} from 'file-saver'
function getStream() {
request('https://vkceyugu.cdn.bspapp.com/VKCEYUGU-8e76dff9-ce38-4577-9e5c-398943705060/a5b050b8-3fa1-4436-b231-7b40725de731.pdf', {
method: 'get',
responseType: 'blob',
}).then((res) => {
const blob = new Blob([res], {
type: 'application/pdf',
});
const url = URL.createObjectURL(blob);
console.log('blob>>>', blob, res, url);
const iframeDom = document.getElementById('iframe') as HTMLFormElement;
iframeDom.src = url + '#toolbar=0';
// 下载的话
saveAs(blob, 'xxx.pdf')
});
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- 使用iframe预览 解决react-pdf插件预览pdf不清楚
<iframe src="" id="iframe" frameBorder="0" style={{ width: '100%', height: '100%', position: 'absolute' }} />
1