[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
This commit is contained in:
Eugenio Romano
2020-08-15 19:05:38 +01:00
committed by GitHub
parent d5d9e70e60
commit bf72fd6c9e
6 changed files with 38 additions and 49 deletions

View File

@@ -35,7 +35,7 @@ describe('PdfThumbComponent', () => {
id: 'pageId', id: 'pageId',
getPage: jasmine.createSpy('getPage').and.returnValue(Promise.resolve({ getPage: jasmine.createSpy('getPage').and.returnValue(Promise.resolve({
getViewport: () => ({ height: width, width: height }), 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), getWidth: jasmine.createSpy('getWidth').and.returnValue(width),

View File

@@ -30,23 +30,23 @@ export class PdfThumbComponent implements OnInit {
image$: Promise<string>; image$: Promise<string>;
constructor(private sanitizer: DomSanitizer) {} constructor(private sanitizer: DomSanitizer) {
}
ngOnInit() { ngOnInit() {
this.image$ = this.page.getPage().then((page) => this.getThumb(page)); this.image$ = this.page.getPage().then((page) => this.getThumb(page));
} }
private getThumb(page): Promise<string> { private getThumb(page): Promise<string> {
const viewport = page.getViewport(1); const viewport = page.getViewport({ scale: 1 });
const canvas = this.getCanvas(); const canvas = this.getCanvas();
const scale = Math.min((canvas.height / viewport.height), (canvas.width / viewport.width)); const scale = Math.min((canvas.height / viewport.height), (canvas.width / viewport.width));
return page.render({ return page.render({
canvasContext: canvas.getContext('2d'), canvasContext: canvas.getContext('2d'),
viewport: page.getViewport(scale) viewport: page.getViewport({ scale: scale })
}) }).promise.then(() => {
.then(() => {
const imageSource = canvas.toDataURL(); const imageSource = canvas.toDataURL();
return this.sanitizer.bypassSecurityTrustUrl(imageSource); return this.sanitizer.bypassSecurityTrustUrl(imageSource);
}); });
@@ -58,4 +58,5 @@ export class PdfThumbComponent implements OnInit {
canvas.height = this.page.getHeight(); canvas.height = this.page.getHeight();
return canvas; return canvas;
} }
} }

View File

@@ -49,7 +49,7 @@ describe('PdfThumbListComponent', () => {
pdfDocument: { pdfDocument: {
getPage: () => Promise.resolve({ getPage: () => Promise.resolve({
getViewport: () => ({ height: 421, width: 335 }), getViewport: () => ({ height: 421, width: 335 }),
render: jasmine.createSpy('render').and.returnValue(Promise.resolve()) render: jasmine.createSpy('render').and.returnValue({ promise: Promise.resolve() })
}) })
}, },
_pages: [ _pages: [

View File

@@ -103,8 +103,12 @@ export class PdfThumbListComponent implements OnInit, AfterViewInit, OnDestroy {
getPages() { getPages() {
return this.pdfViewer._pages.map((page) => ({ return this.pdfViewer._pages.map((page) => ({
id: page.id, id: page.id,
getWidth: () => { return this.width; }, getWidth: () => {
getHeight: () => { return this.currentHeight; }, return this.width;
},
getHeight: () => {
return this.currentHeight;
},
getPage: () => this.pdfViewer.pdfDocument.getPage(page.id) getPage: () => this.pdfViewer.pdfDocument.getPage(page.id)
})); }));
} }
@@ -115,7 +119,7 @@ export class PdfThumbListComponent implements OnInit, AfterViewInit, OnDestroy {
} }
private calculateHeight(page) { private calculateHeight(page) {
const viewport = page.getViewport(1); const viewport = page.getViewport({ scale: 1 });
const pageRatio = viewport.width / viewport.height; const pageRatio = viewport.width / viewport.height;
const height = Math.floor(this.width / pageRatio); const height = Math.floor(this.width / pageRatio);
@@ -133,7 +137,7 @@ export class PdfThumbListComponent implements OnInit, AfterViewInit, OnDestroy {
const end = Math.ceil(indexByScrollTop) + (itemsInView); const end = Math.ceil(indexByScrollTop) + (itemsInView);
this.translateY = this.itemHeight * Math.ceil(start); 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); this.renderItems = this.items.slice(start, end);
} }

58
package-lock.json generated
View File

@@ -5090,6 +5090,7 @@
"version": "6.12.3", "version": "6.12.3",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz",
"integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==",
"dev": true,
"requires": { "requires": {
"fast-deep-equal": "^3.1.1", "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0", "fast-json-stable-stringify": "^2.0.0",
@@ -5133,7 +5134,8 @@
"ajv-keywords": { "ajv-keywords": {
"version": "3.5.1", "version": "3.5.1",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.1.tgz", "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": { "ajv-pack": {
"version": "0.3.1", "version": "0.3.1",
@@ -5853,7 +5855,8 @@
"big.js": { "big.js": {
"version": "5.2.2", "version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "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": { "binary-extensions": {
"version": "2.1.0", "version": "2.1.0",
@@ -9633,7 +9636,8 @@
"emojis-list": { "emojis-list": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true
}, },
"encodeurl": { "encodeurl": {
"version": "1.0.2", "version": "1.0.2",
@@ -10382,7 +10386,8 @@
"fast-deep-equal": { "fast-deep-equal": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "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": { "fast-glob": {
"version": "3.2.4", "version": "3.2.4",
@@ -10417,7 +10422,8 @@
"fast-json-stable-stringify": { "fast-json-stable-stringify": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "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": { "fast-levenshtein": {
"version": "2.0.6", "version": "2.0.6",
@@ -13700,7 +13706,8 @@
"json-schema-traverse": { "json-schema-traverse": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "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": { "json-stringify-safe": {
"version": "5.0.1", "version": "5.0.1",
@@ -13718,6 +13725,7 @@
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
"dev": true,
"requires": { "requires": {
"minimist": "^1.2.0" "minimist": "^1.2.0"
} }
@@ -14543,6 +14551,7 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
"dev": true,
"requires": { "requires": {
"big.js": "^5.2.2", "big.js": "^5.2.2",
"emojis-list": "^3.0.0", "emojis-list": "^3.0.0",
@@ -16197,11 +16206,6 @@
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" "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": { "node-fetch": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
@@ -17670,13 +17674,9 @@
} }
}, },
"pdfjs-dist": { "pdfjs-dist": {
"version": "2.3.200", "version": "2.4.456",
"resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.3.200.tgz", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.4.456.tgz",
"integrity": "sha512-+8wBjU5h8LPZOIvR9X2uCrp/8xWQG1DRDKMLg5lzGN1qyIAZlYUxA0KQyy12Nw5jN7ozulC6v97PMaDcLgAcFg==", "integrity": "sha512-yckJEHq3F48hcp6wStEpbN9McOj328Ib09UrBlGAKxvN2k+qYPN5iq6TH6jD1C0pso7zTep+g/CKsYgdrQd5QA=="
"requires": {
"node-ensure": "^0.0.0",
"worker-loader": "^2.0.0"
}
}, },
"peek-stream": { "peek-stream": {
"version": "1.1.3", "version": "1.1.3",
@@ -19393,7 +19393,8 @@
"punycode": { "punycode": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "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": { "pupa": {
"version": "2.0.1", "version": "2.0.1",
@@ -20748,15 +20749,6 @@
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" "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": { "scss-bundle": {
"version": "2.3.2", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/scss-bundle/-/scss-bundle-2.3.2.tgz", "resolved": "https://registry.npmjs.org/scss-bundle/-/scss-bundle-2.3.2.tgz",
@@ -25222,6 +25214,7 @@
"version": "4.2.2", "version": "4.2.2",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": { "requires": {
"punycode": "^2.1.0" "punycode": "^2.1.0"
} }
@@ -26846,15 +26839,6 @@
"errno": "~0.1.7" "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": { "worker-plugin": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.3.tgz", "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-4.0.3.tgz",

View File

@@ -97,7 +97,7 @@
"moment-es6": "^1.0.0", "moment-es6": "^1.0.0",
"ng2-charts": "2.3.3", "ng2-charts": "2.3.3",
"ngx-monaco-editor": "7.0.0", "ngx-monaco-editor": "7.0.0",
"pdfjs-dist": "2.3.200", "pdfjs-dist": "2.4.456",
"raphael": "2.2.7", "raphael": "2.2.7",
"rxjs": "^6.6.0", "rxjs": "^6.6.0",
"snyk": "^1.316.1", "snyk": "^1.316.1",