From f8acfe51f0f8716c4330f0c6fe80998b22bef1c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hozman?= <tomas.hozman@pm.me>
Date: Sat, 26 Nov 2022 23:49:17 +0100
Subject: [PATCH] repeatable downloads

---
 content/static/js/main.js | 32 +++++++++++++++++++++++---------
 1 file changed, 23 insertions(+), 9 deletions(-)

diff --git a/content/static/js/main.js b/content/static/js/main.js
index f7b37fb..f358387 100644
--- a/content/static/js/main.js
+++ b/content/static/js/main.js
@@ -407,7 +407,7 @@ $(window).ready(
 			}
 		);
 		
-		const createPdf = () => {
+		const createPdf = (page2Canvas = null) => {
 			const pdfDocument = new jsPDF({
 				orientation: "portrait",
 				unit: "pt",
@@ -424,7 +424,10 @@ $(window).ready(
 			pdfDocument.addPage();
 			
 			pdfDocument.addImage(
-				document.getElementById("page-2-canvas"),
+				(
+					(page2Canvas === null) ?
+					document.getElementById("page-2-canvas") : page2Canvas
+				),
 				"JPEG",
 				0, 0,
 				595.28, 841.89
@@ -443,18 +446,29 @@ $(window).ready(
 		$("#download-electronic-pdf").on(
 			"click",
 			() => {
+				const tempCanvas = document.createElement("canvas");
 				const secondPageCanvas = document.getElementById("page-2-canvas");
-				const secondPageContext = secondPageCanvas.getContext("2d");
-				const canvasHeight = secondPageCanvas.height * 0.8;
 				
-				secondPageContext.fillStyle = "#ffffff";
+				tempCanvas.width = secondPageCanvas.width;
+				tempCanvas.height = secondPageCanvas.height;
 				
-				secondPageContext.fillRect(
-					0, secondPageCanvas.height - canvasHeight,
-					secondPageCanvas.width, canvasHeight
+				const tempContext = tempCanvas.getContext("2d");
+				
+				tempContext.drawImage(
+					secondPageCanvas,
+					0, 0
 				);
 				
-				createPdf();
+				const rectHeight = tempCanvas.height * 0.8;
+				
+				tempContext.fillStyle = "#ffffff";
+				
+				tempContext.fillRect(
+					0, tempCanvas.height - rectHeight,
+					tempCanvas.width, rectHeight
+				);
+				
+				createPdf(tempCanvas);
 			}
 		);
 	}
-- 
GitLab