vue中使用vue-pdf打包之后预览报错hash+worker.js路径不对404
vue-pdf
vue.js pdf viewer
项目地址:https://gitcode.com/gh_mirrors/vu/vue-pdf
免费下载资源
·
注: 在使用vue-pdf遇到很多问题,因个人能力有限弃坑,最后使用了pdfjs,可参考如下链接:
https://www.cnblogs.com/linjiangxian/p/13730954.html
https://blog.csdn.net/shentibeitaokong/article/details/80011900
在vue中实现pdf在线预览
1.安装vue-pdf
npm install --save vue-pdf
<template>
<div class="pdf" v-show="fileType === 'pdf'">
<p class="arrow">
<!--上一页 -->
<span @click="changePdfPage(0)" class="turn" :class="{grey: currentPage==1}">Preview</span>
{{currentPage}} / {{pageCount}}
<!--下一页 -->
<span @click="changePdfPage(1)" class="turn" :class="{grey: currentPage==pageCount}">Next</span>
</p>
<!-- 自己引入就可以使用,这里我的需求是做了分页功能,如果不需要分页功能,只要src就可以了 -->
<!-- src需要展示的PDF地址 -->
<!-- page当前展示的PDF页码 -->
<!-- num-pages文件总页码 -->
<!-- @page-loaded一开始加载的页面 -->
<!-- @loaded加载事件 -->
<pdf
:src="src"
:page="currentPage"
@num-pages="pageCount=$event"
@page-loaded="currentPage=$event"
@loaded="loadPdfHandler"> //
</pdf>
</div>
</template>
import pdf from 'vue-pdf/src/vuePdfNoSss.vue'
export default {
name: "login",
data() {
return {
currentPage: 0, // pdf文件页码
pageCount: 0, // pdf文件总页数
fileType: "pdf", // 文件类型
src: "/static/img/深入浅出Node.js.pdf", // pdf文件地址
};
},
components: {
pdf
},
created() {
// 有时PDF文件地址会出现跨域的情况,这里最好处理一下
this.src = pdf.createLoadingTask(this.src)
},
methods: {
loadPdfHandler(e) {
this.currentPage = 1; // 加载的时候先加载第一页
},
// 改变PDF页码,val传过来区分上一页下一页的值,0上一页,1下一页
changePdfPage (val) {
// console.log(val)
if (val === 0 && this.currentPage > 1) {
this.currentPage--
// console.log(this.currentPage)
}
if (val === 1 && this.currentPage < this.pageCount) {
this.currentPage++
// console.log(this.currentPage)
}
},
}
};
这时运行本地pdf可以正常显示,打包之后生产环境pdf显示空白,提示hash+woker.js 404
2、修改node-modules >> vue-pdf >> vuePdfNosss.vue
<style src="./annotationLayer.css"></style>
<script>
import componentFactory from './componentFactory.js'
// 修改部分:引入pdfjsworker
import PdfjsWorker from 'pdfjs-dist/build/pdf.worker.js'
if ( process.env.VUE_ENV !== 'server' ) {
var pdfjsWrapper = require('./pdfjsWrapper.js').default;
var PDFJS = require('pdfjs-dist/es5/build/pdf.js');
if ( typeof window !== 'undefined' && 'Worker' in window && navigator.appVersion.indexOf('MSIE 10') === -1 ) {
// 修改部分:注释原本的引入方法
// var PdfjsWorker = require('worker-loader!pdfjs-dist/es5/build/pdf.worker.js');
PDFJS.GlobalWorkerOptions.workerPort = new PdfjsWorker();
}
var component = componentFactory(pdfjsWrapper(PDFJS));
} else {
var component = componentFactory({});
}
export default component;
</script>
3.修改vue.config.js中的配置文件
chainWebpack: (config) => {
config.module
.rule('worker')
.test(/\.worker\.js$/)
.use('worker-loader').loader('worker-loader')
.options({
inline: true,
fallback: false
}).end();
}
GitHub 加速计划 / vu / vue-pdf
2.19 K
520
下载
vue.js pdf viewer
最近提交(Master分支:2 个月前 )
a9f01b23 - 8 个月前
c188a043
add open_collective vue-pdf 8 个月前
更多推荐
已为社区贡献4条内容
所有评论(0)