demo.vue123<template> <iframe src="src" width="100%" height="100vh" frameborder="none"></iframe></template>12345678910111213141516171819import { previewPdfSrc, getUrlObject } from '@/utils'export default { data(){ return { src: '' } }, methods: { getFileData(){ this.$axios({ url: 'demo/api', method: 'post', responseType: 'arraybuffer' }).then( res => { this.src = previewPdfSrc( res.data ) }) } }}utils.js12345678910111213141516171819202122232425262728// params type ArrayBufferexport function previewPdfSrc( fileArraybuffer ){ let blob = new Blob([fileArraybuffer], { type: 'application/pdf;charset=utf-8' }) // 将 arraybuffer 转换为 url对象 return getUrlObject( blob )}export function getUrlObject( blobFile ){ let url = null if (window.createObjectURL !== undefined) { // basic url = window.createObjectURL(blobFile) } else if (window.webkitURL !== undefined) { // webkit or chrome try { url = window.webkitURL.createObjectURL(blobFile) } catch (error) { // } } else if (window.URL !== undefined) { // mozilla(firefox) try { url = window.URL.createObjectURL(blobFile) } catch (error) { // } } return url}