@toolspack/ttd-pdfjs 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toolspack/ttd-pdfjs",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "private": false,
5
5
  "main": "lib/ttd-pdfjs.umd.min.js",
6
6
  "scripts": {
@@ -22,9 +22,9 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@babel/plugin-proposal-class-properties": "^7.18.6",
25
- "@vue/cli-plugin-babel": "~4.5.0",
25
+ "@vue/cli-plugin-babel": "~4.5.11",
26
26
  "@vue/cli-plugin-eslint": "~4.5.11",
27
- "@vue/cli-service": "~4.5.0",
27
+ "@vue/cli-service": "^4.5.11",
28
28
  "@vue/eslint-config-airbnb": "^5.3.0",
29
29
  "babel-eslint": "^10.1.0",
30
30
  "babel-plugin-component": "^1.1.1",
@@ -9,12 +9,13 @@
9
9
  class="center pdf-view-area"
10
10
  @drop="onDrop"
11
11
  @dragover="onDragOver"
12
+ :key="pdfurl"
12
13
  :style="{'border': border?'1px solid #666': ''}"
13
14
  v-if="pdfurl"
14
15
  >
15
16
  <div v-if="fileLoading" class="pdf-view-loading">文件加载中...</div>
16
- <!-- <div v-else-if="pageRendering" class="pdf-view-rendering">内容渲染中...</div> -->
17
- <canvas class="canvasstyle" ref="canvas"></canvas>
17
+ <div v-else-if="pageRendering" class="pdf-view-rendering">内容渲染中...</div>
18
+ <canvas :key="pdfurl +'canvas'" class="canvasstyle" ref="canvas"></canvas>
18
19
  <div class="label-area">
19
20
  <slot></slot>
20
21
  </div>
@@ -117,57 +118,67 @@ export default {
117
118
  },
118
119
  methods: {
119
120
  async renderPage(num) {
121
+ console.log('renderPage ', this.pageRendering)
122
+ if (this.pageRendering) {
123
+ this.pageNumPending = num;
124
+ } else {
120
125
  // 渲染pdf
121
- const vm = this
122
- this.pageRendering = true
123
- // Using promise to fetch the page
124
- try {
125
- const page = await this.pdfDoc.getPage(num)
126
- let scaleNum = vm.compuscale
127
- let viewport = ''
128
- const viewboxWidth = this.showWidth
129
- if (this.initPage && viewboxWidth) {
130
- const desiredWidth = parseInt(viewboxWidth, 10) - 2
131
- // 首先获得pdf 原本宽度,然后根据showWidth 计算缩放倍数
132
- viewport = page.getViewport({ scale: 1.0 })
133
- scaleNum = desiredWidth / viewport.width
134
- this.initPage = false
135
- this.compuscale = scaleNum
136
- this.maxscale = scaleNum
126
+ const vm = this
127
+ this.pageRendering = true
128
+ // Using promise to fetch the page
129
+ if (!this.pdfDoc) {
130
+ return false
137
131
  }
138
- // 重新渲染 缩放过的PDF
139
- viewport = page.getViewport({ scale: scaleNum })
140
- this.viewport = viewport
132
+ try {
133
+ const page = await this.pdfDoc.getPage(num)
134
+ let scaleNum = vm.compuscale
135
+ let viewport = ''
136
+ const viewboxWidth = this.showWidth
137
+ if (this.initPage && viewboxWidth) {
138
+ const desiredWidth = parseInt(viewboxWidth, 10) - 2
139
+ // 首先获得pdf 原本宽度,然后根据showWidth 计算缩放倍数
140
+ viewport = page.getViewport({ scale: 1.0 })
141
+ scaleNum = desiredWidth / viewport.width
142
+ this.initPage = false
143
+ this.compuscale = scaleNum
144
+ this.maxscale = scaleNum
145
+ }
146
+ // 重新渲染 缩放过的PDF
147
+ viewport = page.getViewport({ scale: scaleNum })
148
+ this.viewport = viewport
141
149
 
142
- // 将 canvas 尺寸 传给父组件
143
- this.$emit('size', viewport, num)
150
+ // 将 canvas 尺寸 传给父组件
151
+ this.$emit('size', viewport, num)
144
152
 
145
- // Render PDF page into canvas context
146
- vm.isready = true
153
+ // Render PDF page into canvas context
154
+ vm.isready = true
147
155
 
148
- const { canvas } = vm.$refs
156
+ const { canvas } = vm.$refs
149
157
 
150
- this.style.width = `${viewport.width + 2}px`;
151
- canvas.height = viewport.height
152
- canvas.width = viewport.width
158
+ this.style.width = `${viewport.width + 2}px`;
159
+ canvas.height = viewport.height
160
+ canvas.width = viewport.width
153
161
 
154
- const renderContext = {
155
- canvasContext: canvas.getContext('2d'),
156
- viewport,
157
- }
158
- // Wait for rendering to finish
159
- await page.render(renderContext).promise
160
- vm.pageRendering = false
161
- if (vm.pageNumPending !== null) {
162
+ const renderContext = {
163
+ canvasContext: canvas.getContext('2d'),
164
+ viewport,
165
+ }
166
+ // Wait for rendering to finish
167
+ await page.render(renderContext).promise
168
+ // console.log(' await page.render 168')
169
+ vm.pageRendering = false
170
+ if (vm.pageNumPending !== null) {
162
171
  // New page rendering is pending
163
- vm.renderPage(vm.pageNumPending)
164
- vm.pageNumPending = null
172
+ vm.renderPage(vm.pageNumPending)
173
+ vm.pageNumPending = null
174
+ }
175
+ this.$emit('renderSuccess')
176
+ } catch (error) {
177
+ console.error(error)
178
+ } finally {
179
+ // console.log('finally 178')
180
+ this.pageRendering = false
165
181
  }
166
- this.$emit('renderSuccess')
167
- } catch (error) {
168
- console.error(error)
169
- } finally {
170
- this.pageRendering = false
171
182
  }
172
183
  },
173
184
  prev() {
@@ -206,13 +217,15 @@ export default {
206
217
  }
207
218
  this.viewport = null
208
219
  this.pdfDoc.destroy();
220
+ // console.log('closepdf end')
209
221
  }
210
- this.pdfDoc = null
222
+ // this.pdfDoc = null
211
223
  this.isready = false
212
224
  this.compuscale = this.scale
213
225
  this.$emit('closepdf')
214
226
  },
215
227
  queueRenderPage(num) {
228
+ // console.log('queueRenderPage 226', this.pageRendering)
216
229
  if (this.pageRendering) {
217
230
  this.pageNumPending = num
218
231
  } else {
@@ -231,6 +244,10 @@ export default {
231
244
  // console.log('-----encodeURI------', url)
232
245
  // }
233
246
  console.log('----PdfView---', url)
247
+ if (this.pdfDoc) {
248
+ // console.log('pdfDocument is ready destroy,,')
249
+ this.pdfDoc.destroy();
250
+ }
234
251
  let pdfDoc_
235
252
  try {
236
253
  pdfDoc_ = await PDFJS.getDocument({
@@ -249,16 +266,13 @@ export default {
249
266
  } finally {
250
267
  this.fileLoading = false
251
268
  }
252
-
253
- // 初始化pdf
254
- if (this.pdfDoc) {
255
- console.log('pdfDocument is ready destroy,,')
256
- await this.closepdf();
257
- this.pdfDoc = null
258
- }
269
+ // console.log('pdfDoc_', pdfDoc_)
270
+ // debugger
259
271
  this.pdfDoc = pdfDoc_
272
+ // 初始化pdf
260
273
  this.page_count = pdfDoc_.numPages
261
274
  this.$emit('numPages', pdfDoc_.numPages)
275
+ // console.log('265', this.pageRendering)
262
276
  this.renderPage(this.pageNum)
263
277
  this.emitPage(this.pageNum)
264
278
  },
@@ -272,6 +286,7 @@ export default {
272
286
  },
273
287
  updateScale() {
274
288
  this.compuscale = this.scale
289
+ // console.log('updateScale 278')
275
290
  this.renderPage(this.pageNum)
276
291
  },
277
292
  },
@@ -296,14 +311,16 @@ export default {
296
311
  },
297
312
  pdfurl: {
298
313
  handler(val) {
314
+ // console.log('watch url change: ', val)
315
+ if (this.pdfDoc) {
316
+ // console.log('closepdf')
317
+ this.closepdf();
318
+ }
299
319
  this.$nextTick(() => {
300
320
  if (val) {
301
321
  this.pageNum = 1
302
322
  this.initPage = true
303
323
  this.loadUrl(val)
304
- if (this.pdfDoc) {
305
- this.closepdf();
306
- }
307
324
  }
308
325
  if (this.showPages) {
309
326
  this.$refs.switchPage.setPage(1)
@@ -314,7 +331,13 @@ export default {
314
331
  },
315
332
  // 监听页码变化,渲染对应合同页
316
333
  page(newPage, oldPage) {
317
- this.queueRenderPage(newPage)
334
+ // console.log('watch page change: ', newPage)
335
+ if (this.pdfDoc) {
336
+ this.queueRenderPage(newPage)
337
+ } else {
338
+ this.pageNum = newPage
339
+ // console.log('no pdfDoc')
340
+ }
318
341
  },
319
342
  },
320
343
  }