You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/05/11 10:50:50 UTC

[isis] branch master updated: ISIS-3040: pdf.js integration java-script fixes

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 19cdded929 ISIS-3040: pdf.js integration java-script fixes
19cdded929 is described below

commit 19cdded92937156b5f3779db51a9fcd15fb1c3d2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed May 11 12:50:44 2022 +0200

    ISIS-3040: pdf.js integration java-script fixes
    
    - such that we can now switch to v2
---
 .../IsisModuleExtPdfjsWicketIntegration.java       |   2 +-
 .../wkt/integration/res/pdfjs-integration-v2.js    | 112 ++++++++++++---------
 2 files changed, 63 insertions(+), 51 deletions(-)

diff --git a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/pdfjs/wkt/integration/IsisModuleExtPdfjsWicketIntegration.java b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/pdfjs/wkt/integration/IsisModuleExtPdfjsWicketIntegration.java
index 6f7ae91563..d954d6a238 100644
--- a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/pdfjs/wkt/integration/IsisModuleExtPdfjsWicketIntegration.java
+++ b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/pdfjs/wkt/integration/IsisModuleExtPdfjsWicketIntegration.java
@@ -46,7 +46,7 @@ implements WicketApplicationInitializer {
     }
 
     public static PdfJsVersion getPdfJsVersion() {
-        return PdfJsVersion.V1_X;
+        return PdfJsVersion.V2_X;
     }
 
 }
diff --git a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2.js b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2.js
index ca14babd23..8cf35b70f9 100644
--- a/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2.js
+++ b/extensions/vw/pdfjs/wicket/integration/src/main/java/org/apache/isis/extensions/pdfjs/wkt/integration/res/pdfjs-integration-v2.js
@@ -95,50 +95,6 @@
             });
 
 
-            /**
-             * Get page info from document, resize canvas accordingly, and render page.
-             * @param num Page number.
-             */
-            function renderPage(num) {
-                pageRendering = true;
-                if(num > pdfDoc.numPages) {
-                    num = pdfDoc.numPages
-                }
-                if(num < 1) {
-                    num = 1
-                }
-                // Using promise to fetch the page
-                pdfDoc.getPage(num).then(function(page) {
-
-                    if (autoScale) {
-                        scale = calculateAutoScale(page)
-                    }
-
-                    var viewport = page.getViewport(scale);
-                    canvas.height = viewport.height;
-                    canvas.width = viewport.width;
-
-                    // Render PDF page into canvas context
-                    var renderContext = {
-                        canvasContext: ctx,
-                        viewport: viewport
-                    };
-                    var renderTask = page.render(renderContext);
-                    // Wait for rendering to finish
-                    renderTask.promise.then(function () {
-                        pageRendering = false;
-                        if (pageNumPending !== null) {
-                            // New page rendering is pending
-                                renderPage(pageNumPending);
-                                pageNumPending = null;
-                            }
-                        });
-                        Wicket.Event.publish(WicketStuff.PDFJS.Topic.CURRENT_PAGE, pageNum, {"canvasId": config.canvasId});
-                        Wicket.Event.publish(WicketStuff.PDFJS.Topic.CURRENT_ZOOM, scaleValue, {"canvasId": config.canvasId});
-                        Wicket.Event.publish(WicketStuff.PDFJS.Topic.CURRENT_HEIGHT, $(canvasDiv).height(), {"canvasId": config.canvasId});
-                });
-            }
-
             function printDocument() {
                 pageRendering = true;
                 abortingPrinting = false;
@@ -271,15 +227,15 @@
 
             function calculateAutoScale(page) {
 
-                var viewport = page.getViewport(1);
+                var viewport = page.getViewport({scale: 1});
                 var pageWidth = viewport.width;
                 var pageHeight = viewport.height;
 
                 var containerWidth = $(canvasDiv).width();
                 var containerHeight = $(canvasDiv).height();
 
-                // console.log("page      (width, height) = (" + pageWidth      + "," + pageHeight      + ")")
-                // console.log("container (width, height) = (" + containerWidth + "," + containerHeight + ")")
+                //console.log("page      (width, height) = (" + pageWidth      + "," + pageHeight      + ")")
+                //console.log("container (width, height) = (" + containerWidth + "," + containerHeight + ")")
 
                 var pageWidthScale = containerWidth / pageWidth;
                 var pageHeightScale = containerHeight / pageHeight;
@@ -390,8 +346,64 @@
                  printDocument();
             });
 
-			console.log("url: " + config.documentUrl);
-			console.log("cMapUrl: " + config.cmapsUrl);
+            function boundedPageNumber(num) {
+                if(num > pdfDoc.numPages) {
+                    return pdfDoc.numPages;
+                }
+                if(num < 1) {
+                    return 1;
+                }
+                return num;
+            }
+
+            /**
+             * Get page info from document, resize canvas accordingly, and render page.
+             * @param num Page number.
+             */
+            function renderPage(num) {
+				console.log("renderPage: " + num);
+	
+                pageRendering = true;
+                // Using promise to fetch the page
+                pdfDoc.getPage(num).then(function(page) {
+
+                    if (autoScale) {
+                        scale = calculateAutoScale(page);
+                    }
+                    
+					//console.log("page ready for rendering, scale: " + scale);
+
+                    var viewport = page.getViewport({scale: scale});
+                    canvas.height = viewport.height;
+                    canvas.width = viewport.width;
+                    
+                    //console.log("viewport.height: " + viewport.height);
+                    //console.log("viewport.width: " + viewport.width);
+
+                    // Render PDF page into canvas context
+                    var renderContext = {
+                        canvasContext: ctx,
+                        viewport: viewport
+                    };
+                    var renderTask = page.render(renderContext);
+                    // Wait for rendering to finish
+                    renderTask.promise.then(function () {
+                        pageRendering = false;
+                        if (pageNumPending !== null) {
+                            // New page rendering is pending
+                                renderPage(pageNumPending);
+                                pageNumPending = null;
+                            }
+                        });
+                        Wicket.Event.publish(WicketStuff.PDFJS.Topic.CURRENT_PAGE, pageNum, {"canvasId": config.canvasId});
+                        Wicket.Event.publish(WicketStuff.PDFJS.Topic.CURRENT_ZOOM, scaleValue, {"canvasId": config.canvasId});
+                        Wicket.Event.publish(WicketStuff.PDFJS.Topic.CURRENT_HEIGHT, $(canvasDiv).height(), {"canvasId": config.canvasId});
+                });
+            }
+
+			//console.log("url: " + config.documentUrl);
+			//console.log("cMapUrl: " + config.cmapsUrl);
+			//console.log("canvasId: " + config.canvasId);
 
             /**
              * Asynchronously downloads PDF.
@@ -405,7 +417,7 @@
             loadingTask.promise.then(function (pdfDoc_) {
                 pdfDoc = pdfDoc_;
                 Wicket.Event.publish(WicketStuff.PDFJS.Topic.TOTAL_PAGES, pdfDoc.numPages, {"canvasId": config.canvasId});
-                renderPage(pageNum);
+                renderPage(boundedPageNumber(pageNum));
             });
         }
     };