Skip to content

Commit 07d9bf3

Browse files
committed
show pages when pdf document is rendered
1 parent d2c77b9 commit 07d9bf3

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

packages/superdoc/src/components/PdfViewer/PdfViewer.vue

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as pdfjsLib from 'pdfjs-dist/legacy/build/pdf.mjs';
33
import * as pdfjsViewer from 'pdfjs-dist/web/pdf_viewer';
44
import workerSrc from './worker.js?raw';
55
import { range } from './helpers/range.js';
6+
import { NSpin } from 'naive-ui';
67
78
import { storeToRefs } from 'pinia';
89
import { onMounted, onUnmounted, ref, getCurrentInstance } from 'vue';
@@ -18,6 +19,7 @@ const { proxy } = getCurrentInstance();
1819
const { activeZoom } = storeToRefs(superdocStore);
1920
const totalPages = ref(null);
2021
const viewer = ref(null);
22+
const isReady = ref(false);
2123
2224
const pdfViewerConfig = proxy.$superdoc.config.pdfViewer;
2325
const textLayerMode = pdfViewerConfig.textLayerMode ?? 0;
@@ -79,15 +81,16 @@ async function _renderPages(pdfDocument) {
7981
const firstPage = 1;
8082
const pdfjsPages = await getPdfjsPages(pdfDocument, firstPage, numPages);
8183
84+
const pageContainers = [];
8285
for (const [index, page] of pdfjsPages.entries()) {
8386
const container = document.createElement('div');
8487
container.className = 'pdf-page';
8588
container.dataset.pageNumber = index + 1;
8689
container.id = `${id}-page-${index + 1}`;
87-
viewer.value.appendChild(container);
90+
91+
pageContainers.push(container);
8892
8993
const { width, height } = getOriginalPageSize(page);
90-
9194
const scale = 1;
9295
const eventBus = new pdfjsViewer.EventBus();
9396
const pdfPageView = new pdfjsViewer.PDFPageView({
@@ -111,6 +114,9 @@ async function _renderPages(pdfDocument) {
111114
emit('page-loaded', id, index, containerBounds);
112115
}
113116
117+
viewer.value.append(...pageContainers);
118+
119+
isReady.value = true;
114120
emit('ready', id, viewer);
115121
} catch (error) {
116122
console.error('Error loading PDF:', error);
@@ -208,10 +214,13 @@ onUnmounted(() => {
208214
<template>
209215
<div class="superdoc-pdf-viewer-container" @mousedown="handlePdfClick" @mouseup="handleMouseUp">
210216
<div class="superdoc-pdf-viewer" ref="viewer" id="viewerId"></div>
217+
218+
<div v-if="!isReady" class="superdoc-pdf-viewer__loader">
219+
<n-spin class="superdoc-pdf-viewer__spin" size="large" />
220+
</div>
211221
</div>
212222
</template>
213223
214-
215224
<style lang="postcss" scoped>
216225
.superdoc-pdf-viewer-container {
217226
width: 100%;
@@ -223,6 +232,20 @@ onUnmounted(() => {
223232
width: 100%;
224233
position: relative;
225234
235+
&__loader {
236+
display: flex;
237+
justify-content: center;
238+
align-items: center;
239+
width: 100%;
240+
min-width: 150px;
241+
min-height: 150px;
242+
243+
:deep(.n-spin) {
244+
--n-color: #1354ff !important;
245+
--n-text-color: #1354ff !important;
246+
}
247+
}
248+
226249
:deep(.pdf-page) {
227250
border-top: 1px solid #dfdfdf;
228251
border-bottom: 1px solid #dfdfdf;

0 commit comments

Comments
 (0)