diff --git a/EnvelopeGenerator.ReceiverUI/wwwroot/js/pdf-viewer.js b/EnvelopeGenerator.ReceiverUI/wwwroot/js/pdf-viewer.js index 871c801f..ac0c0b72 100644 --- a/EnvelopeGenerator.ReceiverUI/wwwroot/js/pdf-viewer.js +++ b/EnvelopeGenerator.ReceiverUI/wwwroot/js/pdf-viewer.js @@ -115,6 +115,22 @@ window.pdfViewer = { this.pageRendering = true; try { + // Get scroll container + const container = this.canvas.closest('.pdf-frame'); + + // Store scroll position and viewport center BEFORE rendering + let scrollLeft = 0, scrollTop = 0; + let centerX = 0, centerY = 0; + let oldWidth = this.canvas.width; + let oldHeight = this.canvas.height; + + if (container) { + scrollLeft = container.scrollLeft; + scrollTop = container.scrollTop; + centerX = scrollLeft + container.clientWidth / 2; + centerY = scrollTop + container.clientHeight / 2; + } + const page = await this.pdfDoc.getPage(num); const viewport = page.getViewport({ scale: this.scale }); @@ -138,6 +154,18 @@ window.pdfViewer = { console.log('Page rendered successfully'); + // Restore viewport center position AFTER rendering + if (container && oldWidth > 0 && oldHeight > 0) { + const scaleX = this.canvas.width / oldWidth; + const scaleY = this.canvas.height / oldHeight; + + const newCenterX = centerX * scaleX; + const newCenterY = centerY * scaleY; + + container.scrollLeft = newCenterX - container.clientWidth / 2; + container.scrollTop = newCenterY - container.clientHeight / 2; + } + this.currentRenderTask = null; this.pageRendering = false;