[ADF-3501] PDF view fixes (#3735)

* PDF view fixes

* updated package.lock

* fix failing tests

* restore test

* use fake web worker for tests

* test fixes

* test fixes

* disable i18n test

* test fixes
This commit is contained in:
Denys Vuika
2018-09-04 14:55:44 +01:00
committed by Eugenio Romano
parent 567d172176
commit c0acc53eb9
21 changed files with 101 additions and 94 deletions

View File

@@ -31,7 +31,8 @@ import { RenderingQueueServices } from '../services/rendering-queue.services';
import { PdfPasswordDialogComponent } from './pdfViewer-password-dialog';
import { MatDialog } from '@angular/material';
declare let PDFJS: any;
declare const pdfjsLib: any;
declare const pdfjsViewer: any;
@Component({
selector: 'adf-pdf-viewer',
@@ -126,7 +127,9 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
}
executePdf(src) {
this.loadingTask = this.getPDFJS().getDocument(src);
pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdf.worker.min.js';
this.loadingTask = pdfjsLib.getDocument(src);
this.loadingTask.onPassword = (callback, reason) => {
this.onPdfPassword(callback, reason);
@@ -155,35 +158,27 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
});
}
/**
* return the PDFJS global object (exist to facilitate the mock of PDFJS in the test)
*/
getPDFJS() {
return PDFJS;
}
initPDFViewer(pdfDocument: any) {
PDFJS.verbosity = 1;
PDFJS.disableWorker = false;
const viewer: any = document.getElementById('viewer-viewerPdf');
const container = document.getElementById('viewer-pdf-viewer');
this.documentContainer = document.getElementById('viewer-pdf-viewer');
this.documentContainer.addEventListener('pagechange', this.onPageChange, true);
this.documentContainer.addEventListener('pagesloaded', this.onPagesLoaded, true);
this.documentContainer.addEventListener('textlayerrendered', this.onPagerendered, true);
if (viewer && container) {
this.documentContainer = container;
this.pdfViewer = new PDFJS.PDFViewer({
container: this.documentContainer,
viewer: viewer,
renderingQueue: this.renderingQueueServices
});
this.documentContainer.addEventListener('pagechange', this.onPageChange, true);
this.documentContainer.addEventListener('pagesloaded', this.onPagesLoaded, true);
this.documentContainer.addEventListener('textlayerrendered', this.onPagerendered, true);
this.renderingQueueServices.setViewer(this.pdfViewer);
this.pdfViewer = new pdfjsViewer.PDFViewer({
container: this.documentContainer,
viewer: viewer,
renderingQueue: this.renderingQueueServices
});
this.pdfViewer.setDocument(pdfDocument);
this.pdfThumbnailsContext.viewer = this.pdfViewer;
this.renderingQueueServices.setViewer(this.pdfViewer);
this.pdfViewer.setDocument(pdfDocument);
this.pdfThumbnailsContext.viewer = this.pdfViewer;
}
}
ngOnDestroy() {
@@ -192,10 +187,6 @@ export class PdfViewerComponent implements OnChanges, OnDestroy {
this.documentContainer.removeEventListener('pagesloaded', this.onPagesLoaded, true);
this.documentContainer.removeEventListener('textlayerrendered', this.onPagerendered, true);
}
if (this.loadingTask) {
this.loadingTask.destroy();
}
}
toggleThumbnails() {