[AAE-12675] update pdfjs version to fix sign problem (#8266)

* update pdfjs version to fix sign problem
This commit is contained in:
Eugenio Romano 2023-02-16 14:37:13 +01:00 committed by GitHub
parent 384628197e
commit 05e2033633
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 191 additions and 433 deletions

View File

@ -167,7 +167,8 @@
"demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss", "demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss", "demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css" "node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
], ],
"scripts": [ "scripts": [
"node_modules/pdfjs-dist/build/pdf.js", "node_modules/pdfjs-dist/build/pdf.js",
@ -357,7 +358,8 @@
"demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss", "demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss", "demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css" "node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
] ]
}, },
"configurations": { "configurations": {
@ -378,7 +380,8 @@
"demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss", "demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss", "demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css" "node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
] ]
}, },
"configurations": { "configurations": {
@ -478,7 +481,8 @@
"demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss", "demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss", "demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css" "node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
] ]
}, },
"configurations": { "configurations": {
@ -499,7 +503,8 @@
"demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss", "demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss", "demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css" "node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
] ]
}, },
"configurations": { "configurations": {
@ -648,7 +653,8 @@
"demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss", "demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss", "demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css" "node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
] ]
}, },
"configurations": { "configurations": {
@ -669,7 +675,8 @@
"demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss", "demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss", "demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css" "node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
] ]
}, },
"configurations": { "configurations": {
@ -966,7 +973,8 @@
"demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss", "demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss", "demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css" "node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
] ]
}, },
"configurations": { "configurations": {
@ -987,7 +995,8 @@
"demo-shell/src/assets/fonts/muli/muli.css", "demo-shell/src/assets/fonts/muli/muli.css",
"demo-shell/src/styles.scss", "demo-shell/src/styles.scss",
"demo-shell/src/custom-style-dev.scss", "demo-shell/src/custom-style-dev.scss",
"node_modules/cropperjs/dist/cropper.min.css" "node_modules/cropperjs/dist/cropper.min.css",
"node_modules/pdfjs-dist/web/pdf_viewer.css"
] ]
}, },
"configurations": { "configurations": {

View File

@ -81,6 +81,12 @@ Title
Description Description
How to fix it: How to fix it:
## Library to update
| Name | Version |
| --- | -- |
| `pdfjs-dist` | `3.3.122`|
## Deprecated items ## Deprecated items
| Class | Before | After | | Class | Before | After |

View File

@ -47,7 +47,7 @@
"@ngx-translate/core": ">=14.0.0", "@ngx-translate/core": ">=14.0.0",
"minimatch-browser": ">=1.0.0", "minimatch-browser": ">=1.0.0",
"moment": ">=2.22.2", "moment": ">=2.22.2",
"pdfjs-dist": ">=2.5.207" "pdfjs-dist": ">=3.3.122"
}, },
"keywords": [ "keywords": [
"core", "core",

View File

@ -1,388 +1,4 @@
.adf-pdf-viewer { .adf-pdf-viewer {
.textLayer {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
overflow: hidden;
opacity: 0.2;
line-height: 1;
}
.textLayer > span {
color: transparent;
position: absolute;
white-space: pre;
cursor: text;
transform-origin: 0% 0%;
}
.textLayer .highlight {
margin: -1px;
padding: 1px;
background-color: rgb(180, 0, 170);
border-radius: 4px;
}
.textLayer .highlight.begin {
border-radius: 4px 0 0 4px;
}
.textLayer .highlight.end {
border-radius: 0 4px 4px 0;
}
.textLayer .highlight.middle {
border-radius: 0;
}
.textLayer .highlight.selected {
background-color: rgb(0, 100, 0);
}
.textLayer ::-moz-selection { background: rgb(0, 0, 255); }
.textLayer ::selection { background: rgb(0, 0, 255); }
.textLayer .endOfContent {
display: block;
position: absolute;
left: 0;
top: 100%;
right: 0;
bottom: 0;
z-index: -1;
cursor: default;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.textLayer .endOfContent.active {
top: 0;
}
.annotationLayer section {
position: absolute;
}
.annotationLayer .linkAnnotation > a,
.annotationLayer .buttonWidgetAnnotation.pushButton > a {
position: absolute;
font-size: 1em;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.annotationLayer .linkAnnotation > a:hover,
.annotationLayer .buttonWidgetAnnotation.pushButton > a:hover {
opacity: 0.2;
background: #ff0;
box-shadow: 0 2px 10px #ff0;
}
.annotationLayer .textAnnotation img {
position: absolute;
cursor: pointer;
}
.annotationLayer .textWidgetAnnotation input,
.annotationLayer .textWidgetAnnotation textarea,
.annotationLayer .choiceWidgetAnnotation select,
.annotationLayer .buttonWidgetAnnotation.checkBox input,
.annotationLayer .buttonWidgetAnnotation.radioButton input {
background-color: rgba(0, 54, 255, 0.13);
border: 1px solid transparent;
box-sizing: border-box;
font-size: 9px;
height: 100%;
margin: 0;
padding: 0 3px;
vertical-align: top;
width: 100%;
}
.annotationLayer .choiceWidgetAnnotation select option {
padding: 0;
}
.annotationLayer .buttonWidgetAnnotation.radioButton input {
border-radius: 50%;
}
.annotationLayer .textWidgetAnnotation textarea {
font: message-box;
font-size: 9px;
resize: none;
}
.annotationLayer .textWidgetAnnotation input[disabled],
.annotationLayer .textWidgetAnnotation textarea[disabled],
.annotationLayer .choiceWidgetAnnotation select[disabled],
.annotationLayer .buttonWidgetAnnotation.checkBox input[disabled],
.annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] {
background: none;
border: 1px solid transparent;
cursor: not-allowed;
}
.annotationLayer .textWidgetAnnotation input:hover,
.annotationLayer .textWidgetAnnotation textarea:hover,
.annotationLayer .choiceWidgetAnnotation select:hover,
.annotationLayer .buttonWidgetAnnotation.checkBox input:hover,
.annotationLayer .buttonWidgetAnnotation.radioButton input:hover {
border: 1px solid #000;
}
.annotationLayer .textWidgetAnnotation input:focus,
.annotationLayer .textWidgetAnnotation textarea:focus,
.annotationLayer .choiceWidgetAnnotation select:focus {
background: none;
border: 1px solid transparent;
}
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after,
.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {
background-color: #000;
content: '';
display: block;
position: absolute;
}
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {
height: 80%;
left: 45%;
width: 1px;
}
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before {
transform: rotate(45deg);
}
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after {
transform: rotate(-45deg);
}
.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before {
border-radius: 50%;
height: 50%;
left: 30%;
top: 20%;
width: 50%;
}
.annotationLayer .textWidgetAnnotation input.comb {
font-family: monospace;
padding-left: 2px;
padding-right: 0;
}
.annotationLayer .textWidgetAnnotation input.comb:focus {
/*
* Letter spacing is placed on the right side of each character. Hence, the
* letter spacing of the last character may be placed outside the visible
* area, causing horizontal scrolling. We avoid this by extending the width
* when the element has focus and revert this when it loses focus.
*/
width: 115%;
}
.annotationLayer .buttonWidgetAnnotation.checkBox input,
.annotationLayer .buttonWidgetAnnotation.radioButton input {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
padding: 0;
}
.annotationLayer .popupWrapper {
position: absolute;
width: 20em;
}
.annotationLayer .popup {
position: absolute;
z-index: 200;
max-width: 20em;
background-color: #ffff99;
box-shadow: 0 2px 5px #888;
border-radius: 2px;
padding: 6px;
margin-left: 5px;
cursor: pointer;
font: message-box;
font-size: 9px;
word-wrap: break-word;
}
.annotationLayer .popup > * {
font-size: 9px;
}
.annotationLayer .popup h1 {
display: inline-block;
}
.annotationLayer .popup span {
display: inline-block;
margin-left: 5px;
}
.annotationLayer .popup p {
border-top: 1px solid #333;
margin-top: 2px;
padding-top: 2px;
}
.annotationLayer .highlightAnnotation,
.annotationLayer .underlineAnnotation,
.annotationLayer .squigglyAnnotation,
.annotationLayer .strikeoutAnnotation,
.annotationLayer .freeTextAnnotation,
.annotationLayer .lineAnnotation svg line,
.annotationLayer .squareAnnotation svg rect,
.annotationLayer .circleAnnotation svg ellipse,
.annotationLayer .polylineAnnotation svg polyline,
.annotationLayer .polygonAnnotation svg polygon,
.annotationLayer .caretAnnotation,
.annotationLayer .inkAnnotation svg polyline,
.annotationLayer .stampAnnotation,
.annotationLayer .fileAttachmentAnnotation {
cursor: pointer;
}
.pdfViewer .canvasWrapper {
overflow: hidden;
}
.pdfViewer .page {
direction: ltr;
width: 816px;
height: 1056px;
margin: 1px auto -8px;
position: relative;
overflow: visible;
border: 9px solid transparent;
background-clip: content-box;
background-color: white;
}
.pdfViewer.removePageBorders .page {
margin: 0 auto 10px;
border: none;
}
.pdfViewer.singlePageView {
display: inline-block;
}
.pdfViewer.singlePageView .page {
margin: 0;
border: none;
}
.pdfViewer.scrollHorizontal, .pdfViewer.scrollWrapped, .spread {
margin-left: 3.5px;
margin-right: 3.5px;
text-align: center;
}
.pdfViewer.scrollHorizontal, .spread {
white-space: nowrap;
}
.pdfViewer.removePageBorders,
.pdfViewer.scrollHorizontal .spread,
.pdfViewer.scrollWrapped .spread {
margin-left: 0;
margin-right: 0;
}
.spread .page,
.pdfViewer.scrollHorizontal .page,
.pdfViewer.scrollWrapped .page,
.pdfViewer.scrollHorizontal .spread,
.pdfViewer.scrollWrapped .spread {
display: inline-block;
vertical-align: middle;
}
.spread .page,
.pdfViewer.scrollHorizontal .page,
.pdfViewer.scrollWrapped .page {
margin-left: -3.5px;
margin-right: -3.5px;
}
.pdfViewer.removePageBorders .spread .page,
.pdfViewer.removePageBorders.scrollHorizontal .page,
.pdfViewer.removePageBorders.scrollWrapped .page {
margin-left: 5px;
margin-right: 5px;
}
.pdfViewer .page canvas {
margin: 0;
display: block;
}
.pdfViewer .page canvas[hidden] {
display: none;
}
.pdfViewer .page .loadingIcon {
position: absolute;
display: block;
left: 0;
top: 0;
right: 0;
bottom: 0;
}
.pdfPresentationMode .pdfViewer {
margin-left: 0;
margin-right: 0;
}
.pdfPresentationMode .pdfViewer .page,
.pdfPresentationMode .pdfViewer .spread {
display: block;
}
.pdfPresentationMode .pdfViewer .page,
.pdfPresentationMode .pdfViewer.removePageBorders .page {
margin-left: auto;
margin-right: auto;
}
.pdfPresentationMode:-ms-fullscreen .pdfViewer .page {
margin-bottom: 100% !important;
}
.pdfPresentationMode:-webkit-full-screen .pdfViewer .page {
margin-bottom: 100%;
border: 0;
}
.pdfPresentationMode:-moz-full-screen .pdfViewer .page {
margin-bottom: 100%;
border: 0;
}
.pdfPresentationMode:fullscreen .pdfViewer .page {
margin-bottom: 100%;
border: 0;
}
.textLayer { .textLayer {
position: absolute; position: absolute;
left: 0; left: 0;

View File

@ -89,6 +89,7 @@
} }
&__toolbar { &__toolbar {
z-index: 100;
position: absolute; position: absolute;
bottom: 5px; bottom: 5px;
left: 50%; left: 50%;

View File

@ -156,7 +156,7 @@ xdescribe('Test PdfViewer component', () => {
component.showToolbar = true; component.showToolbar = true;
component.inputPage('1'); component.inputPage('1');
component.currentScale = 1; component.pdfViewer.currentScale = 1;
fixture.detectChanges(); fixture.detectChanges();
fixture.whenStable().then(() => { fixture.whenStable().then(() => {
@ -281,10 +281,10 @@ xdescribe('Test PdfViewer component', () => {
tick(250); tick(250);
const zoomBefore = componentUrlTestComponent.pdfViewerComponent.currentScale; const zoomBefore = componentUrlTestComponent.pdfViewerComponent.pdfViewer.currentScale;
zoomInButton.click(); zoomInButton.click();
expect(componentUrlTestComponent.pdfViewerComponent.currentScaleMode).toBe('auto'); expect(componentUrlTestComponent.pdfViewerComponent.currentScaleMode).toBe('auto');
const currentZoom = componentUrlTestComponent.pdfViewerComponent.currentScale; const currentZoom = componentUrlTestComponent.pdfViewerComponent.pdfViewer.currentScale;
expect(zoomBefore < currentZoom).toBe(true); expect(zoomBefore < currentZoom).toBe(true);
}), 55000); }), 55000);
@ -295,10 +295,10 @@ xdescribe('Test PdfViewer component', () => {
tick(250); tick(250);
const zoomBefore = componentUrlTestComponent.pdfViewerComponent.currentScale; const zoomBefore = componentUrlTestComponent.pdfViewerComponent.pdfViewer.currentScale;
zoomOutButton.click(); zoomOutButton.click();
expect(componentUrlTestComponent.pdfViewerComponent.currentScaleMode).toBe('auto'); expect(componentUrlTestComponent.pdfViewerComponent.currentScaleMode).toBe('auto');
const currentZoom = componentUrlTestComponent.pdfViewerComponent.currentScale; const currentZoom = componentUrlTestComponent.pdfViewerComponent.pdfViewer.currentScale;
expect(zoomBefore > currentZoom).toBe(true); expect(zoomBefore > currentZoom).toBe(true);
}), 55000); }), 55000);
@ -458,7 +458,7 @@ xdescribe('Test PdfViewer component', () => {
fixtureUrlTestComponent.detectChanges(); fixtureUrlTestComponent.detectChanges();
fixtureUrlTestComponent.whenStable().then(() => { fixtureUrlTestComponent.whenStable().then(() => {
expect(componentUrlTestComponent.pdfViewerComponent.currentScale).toBe(0.8); expect(componentUrlTestComponent.pdfViewerComponent.pdfViewer.currentScale).toBe(0.8);
done(); done();
}); });
}); });
@ -498,7 +498,7 @@ xdescribe('Test PdfViewer component', () => {
fixtureUrlTestComponent.detectChanges(); fixtureUrlTestComponent.detectChanges();
fixtureUrlTestComponent.whenStable().then(() => { fixtureUrlTestComponent.whenStable().then(() => {
expect(componentUrlTestComponent.pdfViewerComponent.currentScale).toBe(0.25); expect(componentUrlTestComponent.pdfViewerComponent.pdfViewer.currentScale).toBe(0.25);
done(); done();
}); });
}); });
@ -538,7 +538,7 @@ xdescribe('Test PdfViewer component', () => {
fixtureUrlTestComponent.detectChanges(); fixtureUrlTestComponent.detectChanges();
fixtureUrlTestComponent.whenStable().then(() => { fixtureUrlTestComponent.whenStable().then(() => {
expect(componentUrlTestComponent.pdfViewerComponent.currentScale).toBe(10); expect(componentUrlTestComponent.pdfViewerComponent.pdfViewer.currentScale).toBe(10);
done(); done();
}); });

View File

@ -36,7 +36,7 @@ import { LogService } from '../../common/services/log.service';
import { RenderingQueueServices } from '../services/rendering-queue.services'; import { RenderingQueueServices } from '../services/rendering-queue.services';
import { PdfPasswordDialogComponent } from './pdf-viewer-password-dialog'; import { PdfPasswordDialogComponent } from './pdf-viewer-password-dialog';
import { AppConfigService } from '../../app-config/app-config.service'; import { AppConfigService } from '../../app-config/app-config.service';
import { PDFDocumentProxy, PDFSource } from 'pdfjs-dist'; import { PDFDocumentProxy } from 'pdfjs-dist';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { catchError, delay } from 'rxjs/operators'; import { catchError, delay } from 'rxjs/operators';
@ -48,7 +48,7 @@ declare const pdfjsViewer: any;
templateUrl: './pdf-viewer.component.html', templateUrl: './pdf-viewer.component.html',
styleUrls: ['./pdf-viewer-host.component.scss', './pdf-viewer.component.scss'], styleUrls: ['./pdf-viewer-host.component.scss', './pdf-viewer.component.scss'],
providers: [RenderingQueueServices], providers: [RenderingQueueServices],
host: { class: 'adf-pdf-viewer' }, host: {class: 'adf-pdf-viewer'},
encapsulation: ViewEncapsulation.None encapsulation: ViewEncapsulation.None
}) })
export class PdfViewerComponent implements OnChanges, OnDestroy { export class PdfViewerComponent implements OnChanges, OnDestroy {
@ -89,7 +89,6 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
loadingPercent: number; loadingPercent: number;
pdfViewer: any; pdfViewer: any;
currentScaleMode: 'init' | 'page-actual' | 'page-width' | 'page-height' | 'page-fit' | 'auto' = 'init'; currentScaleMode: 'init' | 'page-actual' | 'page-width' | 'page-height' | 'page-fit' | 'auto' = 'init';
currentScale: number = 1;
MAX_AUTO_SCALE: number = 1.25; MAX_AUTO_SCALE: number = 1.25;
DEFAULT_SCALE_DELTA: number = 1.1; DEFAULT_SCALE_DELTA: number = 1.1;
@ -99,11 +98,11 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
loadingTask: any; loadingTask: any;
isPanelDisabled = true; isPanelDisabled = true;
showThumbnails: boolean = false; showThumbnails: boolean = false;
pdfThumbnailsContext: { viewer: any } = { viewer: null }; pdfThumbnailsContext: { viewer: any } = {viewer: null};
randomPdfId: string; randomPdfId: string;
get currentScaleText(): string { get currentScaleText(): string {
return Math.round(this.currentScale * 100) + '%'; return this.pdfViewer?.currentScaleValue ? Math.round(this.pdfViewer.currentScaleValue * 100) + '%' : '';
} }
private eventBus = new pdfjsViewer.EventBus(); private eventBus = new pdfjsViewer.EventBus();
@ -156,29 +155,30 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
if (blobFile && blobFile.currentValue) { if (blobFile && blobFile.currentValue) {
const reader = new FileReader(); const reader = new FileReader();
reader.onload = async () => { reader.onload = async () => {
const pdfSource: PDFSource = { const pdfOptions = {
...this.pdfjsDefaultOptions, ...this.pdfjsDefaultOptions,
data: reader.result, data: reader.result,
withCredentials: this.appConfigService.get<boolean>('auth.withCredentials', undefined) withCredentials: this.appConfigService.get<boolean>('auth.withCredentials', undefined)
}; };
this.executePdf(pdfSource); this.executePdf(pdfOptions);
}; };
reader.readAsArrayBuffer(blobFile.currentValue); reader.readAsArrayBuffer(blobFile.currentValue);
} }
const urlFile = changes['urlFile']; const urlFile = changes['urlFile'];
if (urlFile && urlFile.currentValue) { if (urlFile && urlFile.currentValue) {
const pdfSource: PDFSource = { let pdfOptions = {
...this.pdfjsDefaultOptions, ...this.pdfjsDefaultOptions,
url: urlFile.currentValue, url: urlFile.currentValue,
withCredentials: this.appConfigService.get<boolean>('auth.withCredentials', undefined) withCredentials: this.appConfigService.get<boolean>('auth.withCredentials', undefined)
}; };
if (this.cacheType) { if (this.cacheType) {
pdfSource.httpHeaders = { // @ts-ignore
pdfOptions.httpHeaders = {
'Cache-Control': this.cacheType 'Cache-Control': this.cacheType
}; };
} }
this.executePdf(pdfSource); this.executePdf(pdfOptions);
} }
if (!this.urlFile && !this.blobFile) { if (!this.urlFile && !this.blobFile) {
@ -186,7 +186,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
} }
} }
executePdf(pdfOptions: PDFSource) { executePdf(pdfOptions: any) {
pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdf.worker.min.js'; pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdf.worker.min.js';
this.loadingTask = pdfjsLib.getDocument(pdfOptions); this.loadingTask = pdfjsLib.getDocument(pdfOptions);
@ -371,12 +371,8 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
*/ */
setScaleUpdatePages(newScale: number) { setScaleUpdatePages(newScale: number) {
if (this.pdfViewer) { if (this.pdfViewer) {
if (!this.isSameScale(this.currentScale, newScale)) { if (!this.isSameScale(this.pdfViewer.currentScaleValue, newScale)) {
this.currentScale = newScale; this.pdfViewer.currentScaleValue = newScale;
this.pdfViewer._pages.forEach((currentPage) => {
currentPage.update(newScale);
});
} }
this.pdfViewer.update(); this.pdfViewer.update();
@ -428,7 +424,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
* @param ticks * @param ticks
*/ */
zoomIn(ticks?: number) { zoomIn(ticks?: number) {
let newScale: any = this.currentScale; let newScale: any = this.pdfViewer.currentScaleValue;
do { do {
newScale = (newScale * this.DEFAULT_SCALE_DELTA).toFixed(2); newScale = (newScale * this.DEFAULT_SCALE_DELTA).toFixed(2);
newScale = Math.ceil(newScale * 10) / 10; newScale = Math.ceil(newScale * 10) / 10;
@ -444,7 +440,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
* @param ticks * @param ticks
*/ */
zoomOut(ticks?: number) { zoomOut(ticks?: number) {
let newScale: any = this.currentScale; let newScale: any = this.pdfViewer.currentScaleValue;
do { do {
newScale = (newScale / this.DEFAULT_SCALE_DELTA).toFixed(2); newScale = (newScale / this.DEFAULT_SCALE_DELTA).toFixed(2);
newScale = Math.floor(newScale * 10) / 10; newScale = Math.floor(newScale * 10) / 10;
@ -511,7 +507,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
this.dialog this.dialog
.open(PdfPasswordDialogComponent, { .open(PdfPasswordDialogComponent, {
width: '400px', width: '400px',
data: { reason } data: {reason}
}) })
.afterClosed().subscribe((password) => { .afterClosed().subscribe((password) => {
if (password) { if (password) {

View File

@ -128,6 +128,10 @@ export class RenderingQueueServices {
return null; return null;
} }
hasViewer(): boolean {
return !!this.pdfViewer;
}
/** /**
* @param view * @param view
*/ */
@ -156,7 +160,7 @@ export class RenderingQueueServices {
break; break;
case this.renderingStates.INITIAL: case this.renderingStates.INITIAL:
this.highestPriorityPage = view.renderingId; this.highestPriorityPage = view.renderingId;
const continueRendering = function() { const continueRendering = function () {
this.renderHighestPriority(); this.renderHighestPriority();
}.bind(this); }.bind(this);
view.draw().then(continueRendering, continueRendering); view.draw().then(continueRendering, continueRendering);

142
package-lock.json generated
View File

@ -67681,6 +67681,64 @@
"integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==",
"dev": true "dev": true
}, },
"@mapbox/node-pre-gyp": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
"integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
"optional": true,
"requires": {
"detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0",
"make-dir": "^3.1.0",
"node-fetch": "^2.6.7",
"nopt": "^5.0.0",
"npmlog": "^5.0.1",
"rimraf": "^3.0.2",
"semver": "^7.3.5",
"tar": "^6.1.11"
},
"dependencies": {
"are-we-there-yet": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
"integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
"optional": true,
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
}
},
"gauge": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
"optional": true,
"requires": {
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.2",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.1",
"object-assign": "^4.1.1",
"signal-exit": "^3.0.0",
"string-width": "^4.2.3",
"strip-ansi": "^6.0.1",
"wide-align": "^1.1.2"
}
},
"npmlog": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
"integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
"optional": true,
"requires": {
"are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
"gauge": "^3.0.0",
"set-blocking": "^2.0.0"
}
}
}
},
"@mat-datetimepicker/core": { "@mat-datetimepicker/core": {
"version": "9.0.68", "version": "9.0.68",
"resolved": "https://registry.npmjs.org/@mat-datetimepicker/core/-/core-9.0.68.tgz", "resolved": "https://registry.npmjs.org/@mat-datetimepicker/core/-/core-9.0.68.tgz",
@ -89970,8 +90028,7 @@
"abbrev": { "abbrev": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
"dev": true
}, },
"accepts": { "accepts": {
"version": "1.3.8", "version": "1.3.8",
@ -90049,7 +90106,6 @@
"version": "6.0.2", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"dev": true,
"requires": { "requires": {
"debug": "4" "debug": "4"
} }
@ -91802,6 +91858,25 @@
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz",
"integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==" "integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w=="
}, },
"canvas": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.0.tgz",
"integrity": "sha512-bdTjFexjKJEwtIo0oRx8eD4G2yWoUOXP9lj279jmQ2zMnTQhT8C3512OKz3s+ZOaQlLbE7TuVvRDYDB3Llyy5g==",
"optional": true,
"requires": {
"@mapbox/node-pre-gyp": "^1.0.0",
"nan": "^2.17.0",
"simple-get": "^3.0.3"
},
"dependencies": {
"nan": {
"version": "2.17.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
"optional": true
}
}
},
"capture-exit": { "capture-exit": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
@ -93750,6 +93825,15 @@
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
"integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="
}, },
"decompress-response": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
"integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
"optional": true,
"requires": {
"mimic-response": "^2.0.0"
}
},
"dedent": { "dedent": {
"version": "0.7.0", "version": "0.7.0",
"resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
@ -93960,6 +94044,12 @@
"repeat-string": "^1.5.4" "repeat-string": "^1.5.4"
} }
}, },
"detect-libc": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
"optional": true
},
"detect-newline": { "detect-newline": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
@ -97527,7 +97617,6 @@
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"dev": true,
"requires": { "requires": {
"agent-base": "6", "agent-base": "6",
"debug": "4" "debug": "4"
@ -101418,6 +101507,12 @@
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true "dev": true
}, },
"mimic-response": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
"integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
"optional": true
},
"min-document": { "min-document": {
"version": "2.19.0", "version": "2.19.0",
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
@ -102436,7 +102531,6 @@
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
"integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
"dev": true,
"requires": { "requires": {
"abbrev": "1" "abbrev": "1"
} }
@ -103647,6 +103741,11 @@
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
}, },
"path2d-polyfill": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz",
"integrity": "sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA=="
},
"pathval": { "pathval": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
@ -103666,9 +103765,14 @@
} }
}, },
"pdfjs-dist": { "pdfjs-dist": {
"version": "2.5.207", "version": "3.3.122",
"resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.5.207.tgz", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-3.3.122.tgz",
"integrity": "sha512-xGDUhnCYPfHy+unMXCLCJtlpZaaZ17Ew3WIL0tnSgKFUZXHAPD49GO9xScyszSsQMoutNDgRb+rfBXIaX/lJbw==" "integrity": "sha512-98WC09jOq3OuqrmF5+LZfcyzTlGA0sY9ocMBbWZ/H6Pwni7deptxwkNZVLieOz+4nSoTEW25PsfnfOj3ELrHdA==",
"requires": {
"canvas": "^2.11.0",
"path2d-polyfill": "^2.0.1",
"web-streams-polyfill": "^3.2.1"
}
}, },
"performance-now": { "performance-now": {
"version": "2.1.0", "version": "2.1.0",
@ -107110,6 +107214,23 @@
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
}, },
"simple-concat": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
"optional": true
},
"simple-get": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
"integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
"optional": true,
"requires": {
"decompress-response": "^4.2.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
}
},
"sisteransi": { "sisteransi": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
@ -110102,6 +110223,11 @@
"resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
"integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw=="
}, },
"web-streams-polyfill": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
"integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q=="
},
"webdriver-js-extender": { "webdriver-js-extender": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz",

View File

@ -86,7 +86,7 @@
"minimatch-browser": "1.0.0", "minimatch-browser": "1.0.0",
"ng2-charts": "2.4.2", "ng2-charts": "2.4.2",
"ngx-monaco-editor": "8.1.1", "ngx-monaco-editor": "8.1.1",
"pdfjs-dist": "2.5.207", "pdfjs-dist": "3.3.122",
"raphael": "2.3.0", "raphael": "2.3.0",
"rxjs": "6.6.6", "rxjs": "6.6.6",
"subscriptions-transport-ws": "^0.11.0", "subscriptions-transport-ws": "^0.11.0",
@ -120,7 +120,7 @@
"@types/jasminewd2": "~2.0.2", "@types/jasminewd2": "~2.0.2",
"@types/minimatch": "^3.0.3", "@types/minimatch": "^3.0.3",
"@types/node": "18.0.0", "@types/node": "18.0.0",
"@types/pdfjs-dist": "^2.1.5", "@types/pdfjs-dist": "^2.10.378",
"@types/request": "^2.48.5", "@types/request": "^2.48.5",
"@types/selenium-webdriver": "^4.0.11", "@types/selenium-webdriver": "^4.0.11",
"@typescript-eslint/eslint-plugin": "5.47.0", "@typescript-eslint/eslint-plugin": "5.47.0",