change:pdf在某些环境打包失败问题

This commit is contained in:
liyulin 2022-11-12 09:54:17 +08:00
parent a62bb83234
commit c8f81e4802
19 changed files with 269 additions and 86380 deletions

View File

@ -1,13 +1,18 @@
<template>
<div class="pdf-demo">
<vue-office-pdf src="http://static.shanhuxueyuan.com/test.pdf"/>
<vue-office-pdf :src="src"/>
</div>
</template>
<script>
/* eslint-disable */
export default {
name: "PdfDemo"
name: "PdfDemo",
data(){
return {
src:'http://static.shanhuxueyuan.com/test.pdf'
}
}
}
</script>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

7838
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -4,16 +4,18 @@
v-if="numPages"
class="vue-office-pdf-wrapper"
style="background: gray; padding: 30px 0;position: relative;">
<canvas :ref="'canvas'+ page" v-for="page in numPages" :key="page" />
<canvas :ref="'canvas'+ page" v-for="page in numPages" :key="page"/>
</div>
</div>
</template>
<script>
import {worker} from './worker'
const pdfJsLib = require('pdfjs-dist');
const PdfJsWorker = `data:text/javascript;base64,${worker}`;
pdfJsLib.GlobalWorkerOptions.workerSrc = PdfJsWorker
import {pdfjsLib} from './pdf'
import loadScript from "./utils/loadScript";
const pdfJsLibSrc = `data:text/javascript;base64,${pdfjsLib}`;
const PdfJsWorkerSrc = `data:text/javascript;base64,${worker}`;
export default {
name: "VueOfficePdf",
props: {
@ -29,21 +31,32 @@ export default {
},
watch: {
src() {
this.init()
this.checkPdfLib().then(this.init)
}
},
mounted() {
if (this.src) {
this.init()
this.checkPdfLib().then(this.init)
}
},
methods: {
checkPdfLib() {
if (window.pdfjsLib) {
return Promise.resolve()
}
return this.installPdfScript()
},
installPdfScript() {
return loadScript(pdfJsLibSrc).then(() => {
window.pdfjsLib.GlobalWorkerOptions.workerSrc = PdfJsWorkerSrc
});
},
init() {
if(!this.src){
if (!this.src) {
this.numPages = 0
return
}
const loadingTask = pdfJsLib.getDocument(this.src);
const loadingTask = window.pdfjsLib.getDocument(this.src);
loadingTask.promise
.then((pdfDocument) => {
this.document = pdfDocument;
@ -66,10 +79,10 @@ export default {
if (this.numPages > num) {
this.renderPage(num + 1);
}
}).catch(()=>{
}).catch(() => {
});
}).catch(()=>{
}).catch(() => {
});

1
packages/pdf/src/pdf.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,13 @@
export default function (src){
return new Promise(((resolve, reject) => {
let script = document.createElement('script')
script.src = src
script.onload = function (){
resolve()
}
script.onerror = function (){
reject()
}
document.body.append(script)
}))
}