1.原因:google浏览器内部判断了是不是PDF ,如果是就会启动内置的PDF阅读器。
解决:file-saver
import FileSave from 'file-saver'; downloadPDF(URLToPDF,PDFName) { var oReq = new XMLHttpRequest(); oReq.open("GET", URLToPDF, true); oReq.responseType = "blob"; oReq.onload = function() { var file = new Blob([oReq.response], { type: 'application/pdf' }); FileSave.saveAs(file, PDFName); }; oReq.send(); },
2.预览pdf文件
a.使用vue-pdf
<div class="button-wrapper"> <el-button class="left" :disabled="page === 1" @click="pageReduce">上一页</el-button> <el-button class="right" :disabled="page === numPages" @click="pageAdd">下一页</el-button> </div> <div class="middle"> <pdf ref="pdf" :src="src" :page="page" @progress="loadedRatio = $event" @error="error" @num-pages="numPages = $event" @link-clicked="page = $event" ></pdf> import pdf from 'vue-pdf' export default { data() { return { show: false, src: `http://${window.location.host}/static/test.pdf`, loadedRatio: 0, page: 1, numPages: 0, } }, components: { pdf }, methods: { pageAdd() { this.page ++ ; if(this.page >= this.numPages) { this.page = this.numPages } }, pageReduce() { this.page -- ; if(this.page <= 1) { this.page = 1 } }, dialogShow() { this.show = true }, handleClose() { this.show = false }, password: function(updatePassword, reason) { updatePassword(prompt('password is "test"')); }, error: function(err) { console.log(err); } } };
b.iframe 嵌套
<iframe :src="src" frameborder="0" style=" 100%; height: 100%"></iframe>