more work on viewer sync

This commit is contained in:
Timo Bejan 2020-10-14 10:24:08 +03:00
parent c5891c9368
commit 60bef6b7ac
2 changed files with 22 additions and 12 deletions

View File

@ -59,9 +59,6 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnDestroy {
wvDocumentLoadedHandler(): void {
this.wvInstance.setFitMode('FitWidth');
const displayMode = this.wvInstance.docViewer.getDisplayModeManager().getDisplayMode();
displayMode.mode = 'Continuous';
this.wvInstance.docViewer.getDisplayModeManager().setDisplayMode(displayMode);
this.fileReady.emit();
}
@ -138,7 +135,9 @@ export class PdfViewerComponent implements OnInit, AfterViewInit, OnDestroy {
'notesPanel',
'thumbnailControl',
'documentControl',
'ribbons'
'ribbons',
'rotateClockwiseButton',
'rotateCounterClockwiseButton'
]);
}

View File

@ -14,29 +14,40 @@ export class ViewerSyncService {
}
syncViewers() {
localStorage.clear();
if (this._activeViewer) {
const lastScrolledViewer = this._viewers[this._activeViewer];
if (lastScrolledViewer) {
const lastScrolledViewerScrollElement = lastScrolledViewer.docViewer.getScrollViewElement();
const lastActiveViewer = this._viewers[this._activeViewer];
if (lastActiveViewer) {
const lastDisplayMode = lastActiveViewer.docViewer.getDisplayModeManager().getDisplayMode().mode;
const lastLayoutMode = lastActiveViewer.getLayoutMode();
const lastPageNumber = lastActiveViewer.docViewer.getCurrentPage();
const lastScrolledViewerScrollElement = lastActiveViewer.docViewer.getScrollViewElement();
const lastViewerScrollTop = lastScrolledViewerScrollElement.scrollTop;
const lastViewerScrollLeft = lastScrolledViewerScrollElement.scrollLeft;
const currentZoom = lastScrolledViewer.docViewer.getZoom();
const isLeftPanelOpen = lastScrolledViewer.isElementOpen('leftPanel');
const lastViewerZoom = lastActiveViewer.docViewer.getZoom();
const lastViewerLeftPaneState = lastActiveViewer.isElementOpen('leftPanel');
for (const key of Object.keys(this._viewers)) {
if (key !== this._activeViewer) {
const instance = this._viewers[key];
// sync layout and display mode
instance.docViewer.setCurrentPage(lastPageNumber);
instance.setLayoutMode(lastLayoutMode);
const displayMode =instance.docViewer.getDisplayModeManager().getDisplayMode();
displayMode.mode = lastDisplayMode;
instance.docViewer.getDisplayModeManager().setDisplayMode(displayMode);
// Synchronize zoom - needs to be done before scrolling
instance.docViewer.zoomTo(currentZoom);
instance.docViewer.zoomTo(lastViewerZoom);
// Synchronize scroll
const viewerScrollElement = instance.docViewer.getScrollViewElement();
viewerScrollElement.scrollTo(lastViewerScrollLeft, lastViewerScrollTop);
// Synchronize left panel
if (isLeftPanelOpen) {
if (lastViewerLeftPaneState) {
instance.openElements(['leftPanel']);
} else {
instance.closeElements(['leftPanel']);