Commit 5246626d authored by Lukas Eipert's avatar Lukas Eipert

Simplify pdf.js logic

Instead of complicated splicing, we can simply return all pages.
Promise.all will take care of the correct ordering for us.
parent 6d3b203d
......@@ -14,7 +14,6 @@ export default {
},
data() {
return {
loading: false,
pages: [],
};
},
......@@ -37,23 +36,18 @@ export default {
return pdfjsLib
.getDocument(this.document)
.then(this.renderPages)
.then(() => this.$emit('pdflabload'))
.catch(error => this.$emit('pdflaberror', error))
.then(() => {
// Trigger a Vue update: https://vuejs.org/v2/guide/list.html#Caveats
this.pages.splice(this.pages.length);
this.loading = false;
.then(pages => {
this.pages = pages;
this.$emit('pdflabload');
})
.catch(error => {
this.$emit('pdflaberror', error);
});
},
renderPages(pdf) {
const pagePromises = [];
this.loading = true;
for (let num = 1; num <= pdf.numPages; num += 1) {
pagePromises.push(
pdf.getPage(num).then(p => {
this.pages[p.pageIndex] = p;
}),
);
pagePromises.push(pdf.getPage(num));
}
return Promise.all(pagePromises);
},
......@@ -65,8 +59,8 @@ export default {
<div v-if="hasPDF" class="pdf-viewer">
<page
v-for="(page, index) in pages"
v-if="page"
:key="index"
:v-if="!loading"
:page="page"
:number="index + 1"
/>
......
......@@ -39,7 +39,9 @@ export default {
.then(() => {
this.rendering = false;
})
.catch(error => this.$emit('pdflaberror', error));
.catch(error => {
this.$emit('pdflaberror', error);
});
},
};
</script>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment