@toolspack/ttd-pdfjs 0.0.8 → 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.8",
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>
@@ -56,7 +57,6 @@ if (getChromeVersion()) {
56
57
  const PDFJS = require('pdfjs-dist')
57
58
 
58
59
  const defautScale = 1.0
59
-
60
60
  // PDFJS.GlobalWorkerOptions.workerSrc = require('pdfjs-dist/legacy/build/pdf.worker.min.js')
61
61
  PDFJS.GlobalWorkerOptions.workerSrc = require('pdfjs-dist/build/pdf.worker.min.js')
62
62
  // https://unpkg.com/pdfjs-dist@2.16.105/cmaps/
@@ -118,59 +118,67 @@ export default {
118
118
  },
119
119
  methods: {
120
120
  async renderPage(num) {
121
+ console.log('renderPage ', this.pageRendering)
122
+ if (this.pageRendering) {
123
+ this.pageNumPending = num;
124
+ } else {
121
125
  // 渲染pdf
122
- const vm = this
123
- this.pageRendering = true
124
- // Using promise to fetch the page
125
- try {
126
- const page = await this.pdfDoc.getPage(num)
127
- let scaleNum = vm.compuscale
128
- let viewport = ''
129
- const viewboxWidth = this.showWidth
130
- if (this.initPage && viewboxWidth) {
131
- const desiredWidth = parseInt(viewboxWidth, 10) - 2
132
- // 首先获得pdf 原本宽度,然后根据showWidth 计算缩放倍数
133
- viewport = page.getViewport({ scale: 1.0 })
134
- scaleNum = desiredWidth / viewport.width
135
- this.initPage = false
136
- this.compuscale = scaleNum
137
- 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
138
131
  }
139
- // 重新渲染 缩放过的PDF
140
- viewport = page.getViewport({ scale: scaleNum })
141
- this.viewport = viewport
142
-
143
- // canvas 尺寸 传给父组件
144
- this.$emit('size', viewport, num)
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
145
149
 
146
- // Render PDF page into canvas context
147
- vm.isready = true
150
+ // canvas 尺寸 传给父组件
151
+ this.$emit('size', viewport, num)
148
152
 
149
- const { canvas } = vm.$refs
153
+ // Render PDF page into canvas context
154
+ vm.isready = true
150
155
 
151
- this.style.width = `${viewport.width + 2}px`;
152
- canvas.height = viewport.height
153
- canvas.width = viewport.width
156
+ const { canvas } = vm.$refs
154
157
 
155
- const renderContext = {
156
- canvasContext: canvas.getContext('2d'),
157
- viewport,
158
- }
159
- const renderTask = await page.render(renderContext)
158
+ this.style.width = `${viewport.width + 2}px`;
159
+ canvas.height = viewport.height
160
+ canvas.width = viewport.width
160
161
 
161
- // Wait for rendering to finish
162
- renderTask.promise
163
- vm.pageRendering = false
164
- 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) {
165
171
  // New page rendering is pending
166
- vm.renderPage(vm.pageNumPending)
167
- 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
168
181
  }
169
- this.$emit('renderSuccess')
170
- } catch (error) {
171
- console.error(error)
172
- } finally {
173
- this.pageRendering = false
174
182
  }
175
183
  },
176
184
  prev() {
@@ -209,13 +217,15 @@ export default {
209
217
  }
210
218
  this.viewport = null
211
219
  this.pdfDoc.destroy();
220
+ // console.log('closepdf end')
212
221
  }
213
- this.pdfDoc = null
222
+ // this.pdfDoc = null
214
223
  this.isready = false
215
224
  this.compuscale = this.scale
216
225
  this.$emit('closepdf')
217
226
  },
218
227
  queueRenderPage(num) {
228
+ // console.log('queueRenderPage 226', this.pageRendering)
219
229
  if (this.pageRendering) {
220
230
  this.pageNumPending = num
221
231
  } else {
@@ -234,13 +244,12 @@ export default {
234
244
  // console.log('-----encodeURI------', url)
235
245
  // }
236
246
  console.log('----PdfView---', url)
247
+ if (this.pdfDoc) {
248
+ // console.log('pdfDocument is ready destroy,,')
249
+ this.pdfDoc.destroy();
250
+ }
237
251
  let pdfDoc_
238
252
  try {
239
- // const pdfData = await fetch(
240
- // new URL(url, window.location).href,
241
- // );
242
- // const arrayBufferPdf = await pdfData.arrayBuffer(); // 转成 ArrayBuffer 塞给 pdf.js
243
- // pdfDoc_ = await PDFJS.getDocument({ data: arrayBufferPdf }).promise;
244
253
  pdfDoc_ = await PDFJS.getDocument({
245
254
  url: encodeURI(url),
246
255
  cMapUrl,
@@ -257,16 +266,13 @@ export default {
257
266
  } finally {
258
267
  this.fileLoading = false
259
268
  }
260
-
261
- // 初始化pdf
262
- if (this.pdfDoc) {
263
- console.log('pdfDocument is ready destroy,,')
264
- await this.closepdf();
265
- this.pdfDoc = null
266
- }
269
+ // console.log('pdfDoc_', pdfDoc_)
270
+ // debugger
267
271
  this.pdfDoc = pdfDoc_
272
+ // 初始化pdf
268
273
  this.page_count = pdfDoc_.numPages
269
274
  this.$emit('numPages', pdfDoc_.numPages)
275
+ // console.log('265', this.pageRendering)
270
276
  this.renderPage(this.pageNum)
271
277
  this.emitPage(this.pageNum)
272
278
  },
@@ -280,6 +286,7 @@ export default {
280
286
  },
281
287
  updateScale() {
282
288
  this.compuscale = this.scale
289
+ // console.log('updateScale 278')
283
290
  this.renderPage(this.pageNum)
284
291
  },
285
292
  },
@@ -291,7 +298,7 @@ export default {
291
298
  // }
292
299
  },
293
300
  beforeDestroy() {
294
- console.log('---', this.pdfDoc)
301
+ // console.log('---', this.pdfDoc)
295
302
  if (this.pdfDoc) {
296
303
  this.closepdf();
297
304
  }
@@ -304,14 +311,16 @@ export default {
304
311
  },
305
312
  pdfurl: {
306
313
  handler(val) {
314
+ // console.log('watch url change: ', val)
315
+ if (this.pdfDoc) {
316
+ // console.log('closepdf')
317
+ this.closepdf();
318
+ }
307
319
  this.$nextTick(() => {
308
320
  if (val) {
309
321
  this.pageNum = 1
310
322
  this.initPage = true
311
323
  this.loadUrl(val)
312
- if (this.pdfDoc) {
313
- this.closepdf();
314
- }
315
324
  }
316
325
  if (this.showPages) {
317
326
  this.$refs.switchPage.setPage(1)
@@ -322,7 +331,13 @@ export default {
322
331
  },
323
332
  // 监听页码变化,渲染对应合同页
324
333
  page(newPage, oldPage) {
325
- 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
+ }
326
341
  },
327
342
  },
328
343
  }