diff --git a/src/main/java/stirling/software/SPDF/controller/RotationController.java b/src/main/java/stirling/software/SPDF/controller/RotationController.java index 42676f6d..436dc484 100644 --- a/src/main/java/stirling/software/SPDF/controller/RotationController.java +++ b/src/main/java/stirling/software/SPDF/controller/RotationController.java @@ -37,7 +37,7 @@ public class RotationController { @PostMapping("/rotate-pdf") public ResponseEntity rotatePDF(@RequestParam("fileInput") MultipartFile pdfFile, - @RequestParam("angle") String angle) throws IOException { + @RequestParam("angle") Integer angle) throws IOException { // Load the PDF document PDDocument document = PDDocument.load(pdfFile.getBytes()); @@ -50,7 +50,7 @@ public class RotationController { while (iterPage.hasNext()) { PDPage page = iterPage.next(); - page.setRotation(Integer.valueOf(angle)); + page.setRotation(page.getRotation() + angle); } return PdfUtils.pdfDocToWebResponse(document, pdfFile.getName() + "_rotated.pdf"); diff --git a/src/main/resources/templates/rotate-pdf.html b/src/main/resources/templates/rotate-pdf.html index d22c40c8..58855922 100644 --- a/src/main/resources/templates/rotate-pdf.html +++ b/src/main/resources/templates/rotate-pdf.html @@ -24,9 +24,19 @@
- + - +
@@ -57,8 +67,13 @@ const canvas = document.createElement("canvas"); // set the canvas size to the size of the page - canvas.width = page.view[2]; - canvas.height = page.view[3]; + if (page.rotate == 90 || page.rotate == 270) { + canvas.width = page.view[3]; + canvas.height = page.view[2]; + } else { + canvas.width = page.view[2]; + canvas.height = page.view[3]; + } // render the page onto the canvas var renderContext = { @@ -71,14 +86,14 @@ }); function rotate(deg) { - var lastTransform = preview.style.transform; + var lastTransform = preview.style.rotate; if (!lastTransform) { lastTransform = "0"; } const lastAngle = parseInt(lastTransform.replace(/[^\d-]/g, '')); const newAngle = lastAngle + deg; - preview.style.transform = "rotate(" + newAngle + "deg)"; + preview.style.rotate = newAngle + "deg"; angleInput.value = newAngle; } @@ -86,10 +101,14 @@ #pdf-preview { margin: 0 auto; display: block; - max-width: 100%; - max-height: 100%; + max-width: calc(100% - 30px); + max-height: calc(100% - 30px); box-shadow: 0 0 4px rgba(100,100,100,.25); - transition: transform .3s; + transition: rotate .3s; + position: absolute; + top: 50%; + left: 50%; + translate: -50% -50%; } .previewContainer { aspect-ratio: 1; @@ -100,6 +119,7 @@ padding: 15px; display: none; overflow: hidden; + position: relative; } .buttonContainer {