From bf72fd6c9eac9defcf6106f2ade50579704d2ac4 Mon Sep 17 00:00:00 2001 From: Eugenio Romano Date: Sat, 15 Aug 2020 19:05:38 +0100 Subject: [PATCH] [ACA-3853] fix use of more recent pdf viewer versions (#6007) * fix use of more recent pdf viewer versions * fix unit test with thte new promise --- .../pdf-viewer-thumb.component.spec.ts | 2 +- .../components/pdf-viewer-thumb.component.ts | 11 ++-- .../pdf-viewer-thumbnails.component.spec.ts | 2 +- .../pdf-viewer-thumbnails.component.ts | 12 ++-- package-lock.json | 58 +++++++------------ package.json | 2 +- 6 files changed, 38 insertions(+), 49 deletions(-) diff --git a/lib/core/viewer/components/pdf-viewer-thumb.component.spec.ts b/lib/core/viewer/components/pdf-viewer-thumb.component.spec.ts index 1a5627b2eb..4845f43089 100644 --- a/lib/core/viewer/components/pdf-viewer-thumb.component.spec.ts +++ b/lib/core/viewer/components/pdf-viewer-thumb.component.spec.ts @@ -35,7 +35,7 @@ describe('PdfThumbComponent', () => { id: 'pageId', getPage: jasmine.createSpy('getPage').and.returnValue(Promise.resolve({ getViewport: () => ({ height: width, width: height }), - render: jasmine.createSpy('render').and.returnValue(Promise.resolve()) + render: jasmine.createSpy('render').and.returnValue({ promise: Promise.resolve() }) })), getWidth: jasmine.createSpy('getWidth').and.returnValue(width), diff --git a/lib/core/viewer/components/pdf-viewer-thumb.component.ts b/lib/core/viewer/components/pdf-viewer-thumb.component.ts index 22ef6e6c61..903cc32717 100644 --- a/lib/core/viewer/components/pdf-viewer-thumb.component.ts +++ b/lib/core/viewer/components/pdf-viewer-thumb.component.ts @@ -30,23 +30,23 @@ export class PdfThumbComponent implements OnInit { image$: Promise; - constructor(private sanitizer: DomSanitizer) {} + constructor(private sanitizer: DomSanitizer) { + } ngOnInit() { this.image$ = this.page.getPage().then((page) => this.getThumb(page)); } private getThumb(page): Promise { - const viewport = page.getViewport(1); + const viewport = page.getViewport({ scale: 1 }); const canvas = this.getCanvas(); const scale = Math.min((canvas.height / viewport.height), (canvas.width / viewport.width)); return page.render({ canvasContext: canvas.getContext('2d'), - viewport: page.getViewport(scale) - }) - .then(() => { + viewport: page.getViewport({ scale: scale }) + }).promise.then(() => { const imageSource = canvas.toDataURL(); return this.sanitizer.bypassSecurityTrustUrl(imageSource); }); @@ -58,4 +58,5 @@ export class PdfThumbComponent implements OnInit { canvas.height = this.page.getHeight(); return canvas; } + } diff --git a/lib/core/viewer/components/pdf-viewer-thumbnails.component.spec.ts b/lib/core/viewer/components/pdf-viewer-thumbnails.component.spec.ts index 21b2f36d14..71e05c051b 100644 --- a/lib/core/viewer/components/pdf-viewer-thumbnails.component.spec.ts +++ b/lib/core/viewer/components/pdf-viewer-thumbnails.component.spec.ts @@ -49,7 +49,7 @@ describe('PdfThumbListComponent', () => { pdfDocument: { getPage: () => Promise.resolve({ getViewport: () => ({ height: 421, width: 335 }), - render: jasmine.createSpy('render').and.returnValue(Promise.resolve()) + render: jasmine.createSpy('render').and.returnValue({ promise: Promise.resolve() }) }) }, _pages: [ diff --git a/lib/core/viewer/components/pdf-viewer-thumbnails.component.ts b/lib/core/viewer/components/pdf-viewer-thumbnails.component.ts index 5c1ad81112..51f3fa8719 100644 --- a/lib/core/viewer/components/pdf-viewer-thumbnails.component.ts +++ b/lib/core/viewer/components/pdf-viewer-thumbnails.component.ts @@ -103,8 +103,12 @@ export class PdfThumbListComponent implements OnInit, AfterViewInit, OnDestroy { getPages() { return this.pdfViewer._pages.map((page) => ({ id: page.id, - getWidth: () => { return this.width; }, - getHeight: () => { return this.currentHeight; }, + getWidth: () => { + return this.width; + }, + getHeight: () => { + return this.currentHeight; + }, getPage: () => this.pdfViewer.pdfDocument.getPage(page.id) })); } @@ -115,7 +119,7 @@ export class PdfThumbListComponent implements OnInit, AfterViewInit, OnDestroy { } private calculateHeight(page) { - const viewport = page.getViewport(1); + const viewport = page.getViewport({ scale: 1 }); const pageRatio = viewport.width / viewport.height; const height = Math.floor(this.width / pageRatio); @@ -133,7 +137,7 @@ export class PdfThumbListComponent implements OnInit, AfterViewInit, OnDestroy { const end = Math.ceil(indexByScrollTop) + (itemsInView); this.translateY = this.itemHeight * Math.ceil(start); - this.virtualHeight = this.itemHeight * this.items.length - this.translateY; + this.virtualHeight = this.itemHeight * this.items.length - this.translateY; this.renderItems = this.items.slice(start, end); } diff --git a/package-lock.json b/package-lock.json index d3230596ff..f0aa0f3c0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5090,6 +5090,7 @@ "version": "6.12.3", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5133,7 +5134,8 @@ "ajv-keywords": { "version": "3.5.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.1.tgz", - "integrity": "sha512-KWcq3xN8fDjSB+IMoh2VaXVhRI0BBGxoYp3rx7Pkb6z0cFjYR9Q9l4yZqqals0/zsioCmocC5H6UvsGD4MoIBA==" + "integrity": "sha512-KWcq3xN8fDjSB+IMoh2VaXVhRI0BBGxoYp3rx7Pkb6z0cFjYR9Q9l4yZqqals0/zsioCmocC5H6UvsGD4MoIBA==", + "dev": true }, "ajv-pack": { "version": "0.3.1", @@ -5853,7 +5855,8 @@ "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, "binary-extensions": { "version": "2.1.0", @@ -9633,7 +9636,8 @@ "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true }, "encodeurl": { "version": "1.0.2", @@ -10382,7 +10386,8 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-glob": { "version": "3.2.4", @@ -10417,7 +10422,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -13700,7 +13706,8 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stringify-safe": { "version": "5.0.1", @@ -13718,6 +13725,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, "requires": { "minimist": "^1.2.0" } @@ -14543,6 +14551,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -16197,11 +16206,6 @@ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, - "node-ensure": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", - "integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=" - }, "node-fetch": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", @@ -17670,13 +17674,9 @@ } }, "pdfjs-dist": { - "version": "2.3.200", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.3.200.tgz", - "integrity": "sha512-+8wBjU5h8LPZOIvR9X2uCrp/8xWQG1DRDKMLg5lzGN1qyIAZlYUxA0KQyy12Nw5jN7ozulC6v97PMaDcLgAcFg==", - "requires": { - "node-ensure": "^0.0.0", - "worker-loader": "^2.0.0" - } + "version": "2.4.456", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.4.456.tgz", + "integrity": "sha512-yckJEHq3F48hcp6wStEpbN9McOj328Ib09UrBlGAKxvN2k+qYPN5iq6TH6jD1C0pso7zTep+g/CKsYgdrQd5QA==" }, "peek-stream": { "version": "1.1.3", @@ -19393,7 +19393,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "pupa": { "version": "2.0.1", @@ -20748,15 +20749,6 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "schema-utils": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", - "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } - }, "scss-bundle": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/scss-bundle/-/scss-bundle-2.3.2.tgz", @@ -25222,6 +25214,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -26846,15 +26839,6 @@ "errno": "~0.1.7" } }, - "worker-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-2.0.0.tgz", - "integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==", - "requires": { - "loader-utils": "^1.0.0", - "schema-utils": "^0.4.0" - } - }, "worker-plugin": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.3.tgz", diff --git a/package.json b/package.json index 34ad1cd68f..18e09ff711 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,7 @@ "moment-es6": "^1.0.0", "ng2-charts": "2.3.3", "ngx-monaco-editor": "7.0.0", - "pdfjs-dist": "2.3.200", + "pdfjs-dist": "2.4.456", "raphael": "2.2.7", "rxjs": "^6.6.0", "snyk": "^1.316.1",