diff --git a/lib/core/viewer/components/pdf-viewer.component.spec.ts b/lib/core/viewer/components/pdf-viewer.component.spec.ts index 4f7bdd1ad4..9a547a2d4f 100644 --- a/lib/core/viewer/components/pdf-viewer.component.spec.ts +++ b/lib/core/viewer/components/pdf-viewer.component.spec.ts @@ -625,6 +625,16 @@ describe('Test PdfViewer component', () => { }); }, 25000); + it('should check if page fits to documentContainer', (done) => { + spyOn(componentUrlTestComponent.pdfViewerComponent, 'checkPageFitInContainer'); + componentUrlTestComponent.pdfViewerComponent.scalePage(1); + + fixtureUrlTestComponent.detectChanges(); + fixtureUrlTestComponent.whenStable().then(() => { + expect(componentUrlTestComponent.pdfViewerComponent.checkPageFitInContainer).toHaveBeenCalled(); + done(); + }); + }); }); describe('Zoom', () => { diff --git a/lib/core/viewer/components/pdf-viewer.component.ts b/lib/core/viewer/components/pdf-viewer.component.ts index e230f55779..9ed7322294 100644 --- a/lib/core/viewer/components/pdf-viewer.component.ts +++ b/lib/core/viewer/components/pdf-viewer.component.ts @@ -306,6 +306,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy { } horizontalScale = Math.round(horizontalScale); scale = Math.min(this.MAX_AUTO_SCALE, horizontalScale); + scale = this.checkPageFitInContainer(scale); break; default: @@ -316,6 +317,7 @@ export class PdfViewerComponent implements OnChanges, OnDestroy { this.setScaleUpdatePages(scale); } else { this.currentScale = 0; + scale = this.checkPageFitInContainer(scale); this.setScaleUpdatePages(scale); } } @@ -329,6 +331,20 @@ export class PdfViewerComponent implements OnChanges, OnDestroy { return document.getElementById(`${this.randomPdfId}-viewer-viewerPdf`); } + checkPageFitInContainer(scale: number): number { + const documentContainerSize = this.getDocumentContainer(); + const page = this.pdfViewer._pages[this.pdfViewer._currentPageNumber - 1]; + + if (page.width > documentContainerSize.clientWidth) { + scale = Math.fround((documentContainerSize.clientWidth - 20) / page.width); + if (scale < this.MIN_SCALE) { + scale = this.MIN_SCALE; + } + } + + return scale; + } + /** * Update all the pages with the newScale scale *