more work on viewer sync
This commit is contained in:
parent
c5891c9368
commit
60bef6b7ac
@ -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'
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@ -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']);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user