From 4b99093f6b97274743376eec4d8875cf51cea73e Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Fri, 24 Mar 2023 13:27:54 +0000 Subject: [PATCH] opacity --- build.gradle | 2 +- .../SPDF/controller/CropController.java | 66 ------- .../SPDF/controller/SignController.java | 66 ------- .../security/WatermarkController.java | 13 +- src/main/resources/messages_ar_AR.properties | 1 + src/main/resources/messages_de_DE.properties | 1 + src/main/resources/messages_en_GB.properties | 1 + src/main/resources/messages_en_US.properties | 1 + src/main/resources/messages_fr_FR.properties | 1 + src/main/resources/templates/crop-pdf.html | 162 ---------------- .../templates/security/add-watermark.html | 39 ++++ src/main/resources/templates/sign-pdf.html | 173 ------------------ 12 files changed, 57 insertions(+), 469 deletions(-) delete mode 100644 src/main/java/stirling/software/SPDF/controller/CropController.java delete mode 100644 src/main/java/stirling/software/SPDF/controller/SignController.java delete mode 100644 src/main/resources/templates/crop-pdf.html delete mode 100644 src/main/resources/templates/sign-pdf.html diff --git a/build.gradle b/build.gradle index ae51be50f..5d8a4d018 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { } group = 'stirling.software' -version = '0.4.1' +version = '0.4.2' sourceCompatibility = '17' repositories { diff --git a/src/main/java/stirling/software/SPDF/controller/CropController.java b/src/main/java/stirling/software/SPDF/controller/CropController.java deleted file mode 100644 index 70371d016..000000000 --- a/src/main/java/stirling/software/SPDF/controller/CropController.java +++ /dev/null @@ -1,66 +0,0 @@ -package stirling.software.SPDF.controller; - -import java.awt.Graphics2D; -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; - -import javax.imageio.ImageIO; - -import org.apache.pdfbox.cos.COSName; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.PDResources; -import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.multipart.MultipartFile; - -import com.itextpdf.text.DocumentException; -import com.itextpdf.text.pdf.PdfReader; -import com.itextpdf.text.pdf.PdfStamper; - -import stirling.software.SPDF.utils.PdfUtils; -import stirling.software.SPDF.utils.ProcessExecutor; - -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.multipart.MultipartFile; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - - -@Controller -public class CropController { - - private static final Logger logger = LoggerFactory.getLogger(CropController.class); - - @GetMapping("/crop-pdf") - public String compressPdfForm(Model model) { - model.addAttribute("currentPage", "crop-pdf"); - return "crop-pdf"; - } - - -} diff --git a/src/main/java/stirling/software/SPDF/controller/SignController.java b/src/main/java/stirling/software/SPDF/controller/SignController.java deleted file mode 100644 index 8f6ad4046..000000000 --- a/src/main/java/stirling/software/SPDF/controller/SignController.java +++ /dev/null @@ -1,66 +0,0 @@ -package stirling.software.SPDF.controller; - -import java.awt.Graphics2D; -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; - -import javax.imageio.ImageIO; - -import org.apache.pdfbox.cos.COSName; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDPage; -import org.apache.pdfbox.pdmodel.PDResources; -import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.multipart.MultipartFile; - -import com.itextpdf.text.DocumentException; -import com.itextpdf.text.pdf.PdfReader; -import com.itextpdf.text.pdf.PdfStamper; - -import stirling.software.SPDF.utils.PdfUtils; -import stirling.software.SPDF.utils.ProcessExecutor; - -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.multipart.MultipartFile; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - - -@Controller -public class SignController { - - private static final Logger logger = LoggerFactory.getLogger(SignController.class); - - @GetMapping("/sign-pdf") - public String compressPdfForm(Model model) { - model.addAttribute("currentPage", "sign-pdf"); - return "sign-pdf"; - } - - -} diff --git a/src/main/java/stirling/software/SPDF/controller/security/WatermarkController.java b/src/main/java/stirling/software/SPDF/controller/security/WatermarkController.java index ec37ebf18..ea518c30a 100644 --- a/src/main/java/stirling/software/SPDF/controller/security/WatermarkController.java +++ b/src/main/java/stirling/software/SPDF/controller/security/WatermarkController.java @@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile; import stirling.software.SPDF.utils.PdfUtils; import stirling.software.SPDF.utils.WatermarkRemover; +import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState; @Controller public class WatermarkController { @@ -45,7 +46,8 @@ public class WatermarkController { @PostMapping("/add-watermark") public ResponseEntity addWatermark(@RequestParam("fileInput") MultipartFile pdfFile, @RequestParam("watermarkText") String watermarkText, @RequestParam(defaultValue = "30", name = "fontSize") float fontSize, @RequestParam(defaultValue = "0", name = "rotation") float rotation, - @RequestParam(defaultValue = "50", name = "widthSpacer") int widthSpacer, @RequestParam(defaultValue = "50", name = "heightSpacer") int heightSpacer) + @RequestParam(defaultValue = "0.5", name = "opacity") float opacity, + @RequestParam(defaultValue = "50", name = "widthSpacer") int widthSpacer, @RequestParam(defaultValue = "50", name = "heightSpacer") int heightSpacer) throws IOException { // Load the input PDF @@ -53,9 +55,18 @@ public class WatermarkController { // Create a page in the document for (PDPage page : document.getPages()) { + + + + // Get the page's content stream PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true); + // Set transparency + PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState(); + graphicsState.setNonStrokingAlphaConstant(opacity); + contentStream.setGraphicsStateParameters(graphicsState); + // Set font of watermark PDFont font = PDType1Font.HELVETICA_BOLD; contentStream.beginText(); diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 9e66580c8..4a163e443 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -225,6 +225,7 @@ watermark.selectText.3=حجم الخط: watermark.selectText.4=دوران (0-360): watermark.selectText.5=widthSpacer (مسافة بين كل علامة مائية أفقيًا): watermark.selectText.6=heightSpacer (مسافة بين كل علامة مائية عموديًا): +watermark.selectText.7=\u0627\u0644\u062A\u0639\u062A\u064A\u0645 (0\u066A - 100\u066A): watermark.submit=إضافة علامة مائية #remove-watermark diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 28daca8c6..abf5f3f10 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -224,6 +224,7 @@ watermark.selectText.3=Schriftgröße: watermark.selectText.4=Drehung (0-360): watermark.selectText.5=breiteSpacer (horizontaler Abstand zwischen den einzelnen Wasserzeichen): watermark.selectText.6=höheSpacer (vertikaler Abstand zwischen den einzelnen Wasserzeichen): +watermark.selectText.7=Deckkraft (0% - 100 %): watermark.submit=Wasserzeichen hinzufügen #remove-watermark diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 1214ab33a..3fd3477db 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -222,6 +222,7 @@ watermark.selectText.3=Font Size: watermark.selectText.4=Rotation (0-360): watermark.selectText.5=widthSpacer (Space between each watermark horizontally): watermark.selectText.6=heightSpacer (Space between each watermark vertically): +watermark.selectText.7=Opacity (0% - 100%): watermark.submit=Add Watermark #remove-watermark diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 77a765145..740b83b74 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -222,6 +222,7 @@ watermark.selectText.3=Font Size: watermark.selectText.4=Rotation (0-360): watermark.selectText.5=widthSpacer (Space between each watermark horizontally): watermark.selectText.6=heightSpacer (Space between each watermark vertically): +watermark.selectText.7=Opacity (0% - 100%): watermark.submit=Add Watermark #remove-watermark diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index b26d72290..6068bf103 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -230,6 +230,7 @@ watermark.selectText.3=Taille de la police watermark.selectText.4=Rotation (0-360): watermark.selectText.5=widthSpacer (Espace entre chaque filigrane horizontalement): watermark.selectText.6=heightSpacer (Espace entre chaque filigrane verticalement): +watermark.selectText.7=Opacit (0 % - 100 %): watermark.submit=Ajouter un filigrane #remove-watermark diff --git a/src/main/resources/templates/crop-pdf.html b/src/main/resources/templates/crop-pdf.html deleted file mode 100644 index ae551ffe6..000000000 --- a/src/main/resources/templates/crop-pdf.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - -
-
-
-

-
-
-
-

- - - - - - - - - -
-
-
-
-
- -
- - \ No newline at end of file diff --git a/src/main/resources/templates/security/add-watermark.html b/src/main/resources/templates/security/add-watermark.html index cb9b5fedb..2a4180821 100644 --- a/src/main/resources/templates/security/add-watermark.html +++ b/src/main/resources/templates/security/add-watermark.html @@ -26,6 +26,45 @@ +
+ + + +
+ + +
diff --git a/src/main/resources/templates/sign-pdf.html b/src/main/resources/templates/sign-pdf.html deleted file mode 100644 index a5ce67c5e..000000000 --- a/src/main/resources/templates/sign-pdf.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - -
-
-
-

-
-
-
-

- - - - PDF Signature App - - - - - - -
- - -
- - - - - - - - - - - - -
-
-
-
-
-
- - \ No newline at end of file