mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-10-25 11:17:28 +02:00 
			
		
		
		
	util move around
This commit is contained in:
		
							parent
							
								
									005b158ad3
								
							
						
					
					
						commit
						1b45ab7222
					
				| @ -17,7 +17,7 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class MergeController { | ||||
| @ -65,7 +65,7 @@ public class MergeController { | ||||
| 
 | ||||
|          | ||||
|         // Return the merged PDF as a response | ||||
|         ResponseEntity<byte[]> response = PdfUtils.pdfDocToWebResponse(mergedDoc, files[0].getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_merged.pdf"); | ||||
|         ResponseEntity<byte[]> response = WebResponseUtils.pdfDocToWebResponse(mergedDoc, files[0].getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_merged.pdf"); | ||||
|          | ||||
|         for (PDDocument doc : documents) { | ||||
|             // Close the document after processing | ||||
|  | ||||
| @ -2,6 +2,8 @@ package stirling.software.SPDF.controller.api; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| 
 | ||||
| @ -18,7 +20,6 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class RearrangePagesPDFController { | ||||
| @ -48,7 +49,7 @@ public class RearrangePagesPDFController { | ||||
|             int pageIndex = pagesToRemove.get(i); | ||||
|             document.removePage(pageIndex); | ||||
|         } | ||||
|         return PdfUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_removed_pages.pdf"); | ||||
|         return WebResponseUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_removed_pages.pdf"); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| @ -239,7 +240,7 @@ public class RearrangePagesPDFController { | ||||
|                 document.addPage(page); | ||||
|             } | ||||
| 
 | ||||
|             return PdfUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_rearranged.pdf"); | ||||
|             return WebResponseUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_rearranged.pdf"); | ||||
|         } catch (IOException e) { | ||||
|             logger.error("Failed rearranging documents", e); | ||||
|             return null; | ||||
|  | ||||
| @ -16,7 +16,7 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class RotationController { | ||||
| @ -46,7 +46,7 @@ public class RotationController { | ||||
|             page.setRotation(page.getRotation() + angle); | ||||
|         } | ||||
| 
 | ||||
|         return PdfUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_rotated.pdf"); | ||||
|         return WebResponseUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_rotated.pdf"); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -21,6 +21,7 @@ import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| @RestController | ||||
| public class ConvertImgPDFController { | ||||
| 
 | ||||
| @ -98,7 +99,7 @@ public class ConvertImgPDFController { | ||||
|                     boolean autoRotate) throws IOException { | ||||
|         // Convert the file to PDF and get the resulting bytes | ||||
|         byte[] bytes = PdfUtils.imageToPdf(file, stretchToFit, autoRotate, colorType); | ||||
|         return PdfUtils.bytesToWebResponse(bytes, file[0].getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_coverted.pdf"); | ||||
|         return WebResponseUtils.bytesToWebResponse(bytes, file[0].getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_coverted.pdf"); | ||||
|     } | ||||
| 
 | ||||
|     private String getMediaType(String imageFormat) { | ||||
|  | ||||
| @ -17,8 +17,8 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.ProcessExecutor; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class ConvertOfficeController { | ||||
| @ -72,7 +72,7 @@ public class ConvertOfficeController { | ||||
|         // LibreOfficeListener.getInstance().start(); | ||||
| 
 | ||||
|         byte[] pdfByteArray = convertToPdf(inputFile); | ||||
|         return PdfUtils.bytesToWebResponse(pdfByteArray, inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_convertedToPDF.pdf"); | ||||
|         return WebResponseUtils.bytesToWebResponse(pdfByteArray, inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_convertedToPDF.pdf"); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -14,8 +14,8 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.ProcessExecutor; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class ConvertPDFToPDFA { | ||||
| @ -58,7 +58,7 @@ public class ConvertPDFToPDFA { | ||||
| 
 | ||||
|         // Return the optimized PDF as a response | ||||
|         String outputFilename = inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_PDFA.pdf"; | ||||
|         return PdfUtils.bytesToWebResponse(pdfBytes, outputFilename); | ||||
|         return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -28,9 +28,9 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.ImageFinder; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.pdf.ImageFinder; | ||||
| import stirling.software.SPDF.utils.ProcessExecutor; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class BlankPageController { | ||||
| @ -109,7 +109,7 @@ public class BlankPageController { | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return PdfUtils.pdfDocToWebResponse(document, inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_blanksRemoved.pdf"); | ||||
|             return WebResponseUtils.pdfDocToWebResponse(document, inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_blanksRemoved.pdf"); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|             return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); | ||||
|  | ||||
| @ -31,8 +31,9 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.GeneralFileUtils; | ||||
| import stirling.software.SPDF.utils.ProcessExecutor; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class CompressController { | ||||
| @ -55,7 +56,7 @@ public class CompressController { | ||||
|         Long expectedOutputSize = 0L; | ||||
|         boolean autoMode = false; | ||||
|         if (expectedOutputSizeString != null && expectedOutputSizeString.length() > 1 ) { | ||||
|             expectedOutputSize = PdfUtils.convertSizeToBytes(expectedOutputSizeString); | ||||
|             expectedOutputSize = GeneralFileUtils.convertSizeToBytes(expectedOutputSizeString); | ||||
|             autoMode = true; | ||||
|         } | ||||
| 
 | ||||
| @ -224,7 +225,7 @@ public class CompressController { | ||||
| 
 | ||||
|         // Return the optimized PDF as a response | ||||
|         String outputFilename = inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_Optimized.pdf"; | ||||
|         return PdfUtils.bytesToWebResponse(pdfBytes, outputFilename); | ||||
|         return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -31,8 +31,8 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.ProcessExecutor; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class ExtractImageScansController { | ||||
| @ -147,11 +147,11 @@ public class ExtractImageScansController { | ||||
|             // Clean up the temporary zip file | ||||
|             Files.delete(tempZipFile); | ||||
| 
 | ||||
|             return PdfUtils.bytesToWebResponse(zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM); | ||||
|             return WebResponseUtils.bytesToWebResponse(zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM); | ||||
|         } else { | ||||
|             // Return the processed image as a response | ||||
|             byte[] imageBytes = processedImageBytes.get(0); | ||||
|             return PdfUtils.bytesToWebResponse(imageBytes, fileName.replaceFirst("[.][^.]+$", "") + ".png", MediaType.IMAGE_PNG); | ||||
|             return WebResponseUtils.bytesToWebResponse(imageBytes, fileName.replaceFirst("[.][^.]+$", "") + ".png", MediaType.IMAGE_PNG); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
|  | ||||
| @ -29,7 +29,7 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| @RestController | ||||
| public class ExtractImagesController { | ||||
| 
 | ||||
| @ -106,7 +106,7 @@ public class ExtractImagesController { | ||||
|         // Create ByteArrayResource from byte array | ||||
|         byte[] zipContents = baos.toByteArray(); | ||||
| 
 | ||||
|         return PdfUtils.boasToWebResponse(baos, filename + "_extracted-images.zip", MediaType.APPLICATION_OCTET_STREAM); | ||||
|         return WebResponseUtils.boasToWebResponse(baos, filename + "_extracted-images.zip", MediaType.APPLICATION_OCTET_STREAM); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -19,7 +19,7 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class MetadataController { | ||||
| @ -159,7 +159,7 @@ public class MetadataController { | ||||
|         info.setTrapped(trapped); | ||||
| 
 | ||||
|         document.setDocumentInformation(info); | ||||
|         return PdfUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_metadata.pdf"); | ||||
|         return WebResponseUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_metadata.pdf"); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -24,7 +24,7 @@ import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class MultiPageLayoutController { | ||||
| @ -93,7 +93,7 @@ public class MultiPageLayoutController { | ||||
| 		byte[] pdfContent = baos.toByteArray(); | ||||
| 		pdfDoc.close(); | ||||
| 		 | ||||
| 		return PdfUtils.bytesToWebResponse(pdfContent, file.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_layoutChanged.pdf"); | ||||
| 		return WebResponseUtils.bytesToWebResponse(pdfContent, file.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_layoutChanged.pdf"); | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -27,8 +27,8 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.ProcessExecutor; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class OCRController { | ||||
| @ -189,11 +189,11 @@ public class OCRController { | ||||
|             Files.delete(sidecarTextPath); | ||||
| 
 | ||||
|             // Return the zip file containing both the PDF and the text file | ||||
|             return PdfUtils.bytesToWebResponse(zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM); | ||||
|             return WebResponseUtils.bytesToWebResponse(zipBytes, outputZipFilename, MediaType.APPLICATION_OCTET_STREAM); | ||||
|         } else { | ||||
|             // Return the OCR processed PDF as a response | ||||
|             Files.delete(tempOutputFile); | ||||
|             return PdfUtils.bytesToWebResponse(pdfBytes, outputFilename); | ||||
|             return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
|  | ||||
| @ -15,6 +15,7 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class OverlayImageController { | ||||
| @ -47,7 +48,7 @@ public class OverlayImageController { | ||||
|             byte[] imageBytes = imageFile.getBytes(); | ||||
|             byte[] result = PdfUtils.overlayImage(pdfBytes, imageBytes, x, y, everyPage); | ||||
| 
 | ||||
|             return PdfUtils.bytesToWebResponse(result, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_overlayed.pdf"); | ||||
|             return WebResponseUtils.bytesToWebResponse(result, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_overlayed.pdf"); | ||||
|         } catch (IOException e) { | ||||
|             logger.error("Failed to add image to PDF", e); | ||||
|             return new ResponseEntity<>(HttpStatus.BAD_REQUEST); | ||||
|  | ||||
| @ -16,8 +16,8 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.ProcessExecutor; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class RepairController { | ||||
| @ -60,7 +60,7 @@ public class RepairController { | ||||
| 
 | ||||
|         // Return the optimized PDF as a response | ||||
|         String outputFilename = inputFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_repaired.pdf"; | ||||
|         return PdfUtils.bytesToWebResponse(pdfBytes, outputFilename); | ||||
|         return WebResponseUtils.bytesToWebResponse(pdfBytes, outputFilename); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -2,6 +2,8 @@ package stirling.software.SPDF.controller.api.security; | ||||
| 
 | ||||
| import java.io.ByteArrayInputStream; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| import java.io.ByteArrayOutputStream; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| @ -51,7 +53,6 @@ import com.itextpdf.signatures.SignatureUtil; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| @RestController | ||||
| public class CertSignController { | ||||
| 
 | ||||
| @ -239,7 +240,7 @@ public class CertSignController { | ||||
|         System.out.println("Signed PDF size: " + signedPdf.size()); | ||||
| 
 | ||||
|         System.out.println("PDF signed = " + isPdfSigned(signedPdf.toByteArray())); | ||||
|         return PdfUtils.bytesToWebResponse(signedPdf.toByteArray(), "example.pdf"); | ||||
|         return WebResponseUtils.bytesToWebResponse(signedPdf.toByteArray(), "example.pdf"); | ||||
|     } | ||||
| 
 | ||||
| public boolean isPdfSigned(byte[] pdfData) throws IOException { | ||||
|  | ||||
| @ -17,7 +17,7 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.media.Schema; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| @RestController | ||||
| public class PasswordController { | ||||
| 
 | ||||
| @ -38,7 +38,7 @@ public class PasswordController { | ||||
|             String password) throws IOException { | ||||
|         PDDocument document = PDDocument.load(fileInput.getBytes(), password); | ||||
|         document.setAllSecurityToBeRemoved(true); | ||||
|         return PdfUtils.pdfDocToWebResponse(document, fileInput.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_password_removed.pdf"); | ||||
|         return WebResponseUtils.pdfDocToWebResponse(document, fileInput.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_password_removed.pdf"); | ||||
|     } | ||||
| 
 | ||||
|     @PostMapping(consumes = "multipart/form-data", value = "/add-password") | ||||
| @ -105,7 +105,7 @@ public class PasswordController { | ||||
| 
 | ||||
|         document.protect(spp); | ||||
| 
 | ||||
|         return PdfUtils.pdfDocToWebResponse(document, fileInput.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_passworded.pdf"); | ||||
|         return WebResponseUtils.pdfDocToWebResponse(document, fileInput.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_passworded.pdf"); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -19,7 +19,7 @@ import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import stirling.software.SPDF.utils.PdfUtils; | ||||
| import stirling.software.SPDF.utils.WebResponseUtils; | ||||
| 
 | ||||
| @RestController | ||||
| public class WatermarkController { | ||||
| @ -91,7 +91,7 @@ public class WatermarkController { | ||||
|             // Close the content stream | ||||
|             contentStream.close(); | ||||
|         } | ||||
|         return PdfUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_watermarked.pdf"); | ||||
|         return WebResponseUtils.pdfDocToWebResponse(document, pdfFile.getOriginalFilename().replaceFirst("[.][^.]+$", "") + "_watermarked.pdf"); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| package stirling.software.SPDF.utils; | ||||
| package stirling.software.SPDF.pdf; | ||||
| 
 | ||||
| import java.awt.geom.Point2D; | ||||
| import java.io.IOException; | ||||
| @ -0,0 +1,30 @@ | ||||
| package stirling.software.SPDF.utils; | ||||
| 
 | ||||
| public class GeneralFileUtils { | ||||
| 
 | ||||
| 	public static Long convertSizeToBytes(String sizeStr) { | ||||
| 	    if (sizeStr == null) { | ||||
| 	        return null; | ||||
| 	    } | ||||
| 	 | ||||
| 	    sizeStr = sizeStr.trim().toUpperCase(); | ||||
| 	    try { | ||||
| 	        if (sizeStr.endsWith("KB")) { | ||||
| 	            return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024); | ||||
| 	        } else if (sizeStr.endsWith("MB")) { | ||||
| 	            return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024 * 1024); | ||||
| 	        } else if (sizeStr.endsWith("GB")) { | ||||
| 	            return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024 * 1024 * 1024); | ||||
| 	        } else if (sizeStr.endsWith("B")) { | ||||
| 	            return Long.parseLong(sizeStr.substring(0, sizeStr.length() - 1)); | ||||
| 	        } else { | ||||
| 	            // Input string does not have a valid format, handle this case | ||||
| 	        } | ||||
| 	    } catch (NumberFormatException e) { | ||||
| 	        // The numeric part of the input string cannot be parsed, handle this case | ||||
| 	    } | ||||
| 	     | ||||
| 	    return null; | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,25 @@ | ||||
| package stirling.software.SPDF.utils; | ||||
| 
 | ||||
| import java.awt.image.BufferedImage; | ||||
| 
 | ||||
| public class ImageProcessingUtils { | ||||
| 
 | ||||
| 	static BufferedImage convertColorType(BufferedImage sourceImage, String colorType) { | ||||
| 	    BufferedImage convertedImage; | ||||
| 	    switch (colorType) { | ||||
| 	        case "greyscale": | ||||
| 	            convertedImage = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_BYTE_GRAY); | ||||
| 	            convertedImage.getGraphics().drawImage(sourceImage, 0, 0, null); | ||||
| 	            break; | ||||
| 	        case "blackwhite": | ||||
| 	            convertedImage = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_BYTE_BINARY); | ||||
| 	            convertedImage.getGraphics().drawImage(sourceImage, 0, 0, null); | ||||
| 	            break; | ||||
| 	        default:  // full color | ||||
| 	            convertedImage = sourceImage; | ||||
| 	            break; | ||||
| 	    } | ||||
| 	    return convertedImage; | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,5 @@ | ||||
| package stirling.software.SPDF.utils; | ||||
| 
 | ||||
| public class PDFManipulationUtils { | ||||
| 
 | ||||
| } | ||||
| @ -92,6 +92,6 @@ public class PDFToFile { | ||||
|             if (tempOutputDir != null) | ||||
|                 FileUtils.deleteDirectory(tempOutputDir.toFile()); | ||||
|         } | ||||
|         return PdfUtils.bytesToWebResponse(fileBytes, fileName, MediaType.APPLICATION_OCTET_STREAM); | ||||
|         return WebResponseUtils.bytesToWebResponse(fileBytes, fileName, MediaType.APPLICATION_OCTET_STREAM); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -8,8 +8,6 @@ import java.io.File; | ||||
| import java.io.FileOutputStream; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.net.URLEncoder; | ||||
| import java.nio.charset.StandardCharsets; | ||||
| import java.nio.file.Files; | ||||
| import java.security.KeyPair; | ||||
| import java.security.KeyStore; | ||||
| @ -37,39 +35,12 @@ import org.apache.pdfbox.rendering.ImageType; | ||||
| import org.apache.pdfbox.rendering.PDFRenderer; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.http.HttpHeaders; | ||||
| import org.springframework.http.HttpStatus; | ||||
| import org.springframework.http.MediaType; | ||||
| import org.springframework.http.ResponseEntity; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| 
 | ||||
| public class PdfUtils { | ||||
| 
 | ||||
|     private static final Logger logger = LoggerFactory.getLogger(PdfUtils.class); | ||||
| 
 | ||||
|     public static ResponseEntity<byte[]> boasToWebResponse(ByteArrayOutputStream baos, String docName) throws IOException { | ||||
|         return PdfUtils.bytesToWebResponse(baos.toByteArray(), docName); | ||||
|     } | ||||
| 
 | ||||
|     public static ResponseEntity<byte[]> boasToWebResponse(ByteArrayOutputStream baos, String docName, MediaType mediaType) throws IOException { | ||||
|         return PdfUtils.bytesToWebResponse(baos.toByteArray(), docName, mediaType); | ||||
|     } | ||||
| 
 | ||||
|     public static ResponseEntity<byte[]> bytesToWebResponse(byte[] bytes, String docName, MediaType mediaType) throws IOException { | ||||
| 
 | ||||
|         // Return the PDF as a response | ||||
|         HttpHeaders headers = new HttpHeaders(); | ||||
|         headers.setContentType(mediaType); | ||||
|         headers.setContentLength(bytes.length); | ||||
|         String encodedDocName = URLEncoder.encode(docName, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20"); | ||||
|         headers.setContentDispositionFormData("attachment", encodedDocName); | ||||
|         return new ResponseEntity<>(bytes, headers, HttpStatus.OK); | ||||
|     } | ||||
| 
 | ||||
|     public static ResponseEntity<byte[]> bytesToWebResponse(byte[] bytes, String docName) throws IOException { | ||||
|         return bytesToWebResponse(bytes, docName, MediaType.APPLICATION_PDF); | ||||
|     } | ||||
| 
 | ||||
|     public static byte[] convertFromPdf(byte[] inputStream, String imageType, ImageType colorType, boolean singleImage, int DPI, String filename) throws IOException, Exception { | ||||
|         try (PDDocument document = PDDocument.load(new ByteArrayInputStream(inputStream))) { | ||||
|             PDFRenderer pdfRenderer = new PDFRenderer(document); | ||||
| @ -134,7 +105,7 @@ public class PdfUtils { | ||||
|                     int numPages = reader.getNumImages(true); | ||||
|                     for (int i = 0; i < numPages; i++) { | ||||
|                         BufferedImage pageImage = reader.read(i); | ||||
|                         BufferedImage convertedImage = convertColorType(pageImage, colorType); | ||||
|                         BufferedImage convertedImage = ImageProcessingUtils.convertColorType(pageImage, colorType); | ||||
|                         PDImageXObject pdImage = LosslessFactory.createFromImage(doc, convertedImage); | ||||
|                         addImageToDocument(doc, pdImage, stretchToFit, autoRotate); | ||||
|                     } | ||||
| @ -147,7 +118,7 @@ public class PdfUtils { | ||||
|                             fos.write(buffer, 0, len); | ||||
|                         } | ||||
|                         BufferedImage image = ImageIO.read(imageFile); | ||||
|                         BufferedImage convertedImage = convertColorType(image, colorType); | ||||
|                         BufferedImage convertedImage = ImageProcessingUtils.convertColorType(image, colorType); | ||||
|                         PDImageXObject pdImage; | ||||
|                         if (contentType != null && (contentType.equals("image/jpeg"))) { | ||||
|                             pdImage = JPEGFactory.createFromImage(doc, convertedImage); | ||||
| @ -170,24 +141,6 @@ public class PdfUtils { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private static BufferedImage convertColorType(BufferedImage sourceImage, String colorType) { | ||||
|         BufferedImage convertedImage; | ||||
|         switch (colorType) { | ||||
|             case "greyscale": | ||||
|                 convertedImage = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_BYTE_GRAY); | ||||
|                 convertedImage.getGraphics().drawImage(sourceImage, 0, 0, null); | ||||
|                 break; | ||||
|             case "blackwhite": | ||||
|                 convertedImage = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_BYTE_BINARY); | ||||
|                 convertedImage.getGraphics().drawImage(sourceImage, 0, 0, null); | ||||
|                 break; | ||||
|             default:  // full color | ||||
|                 convertedImage = sourceImage; | ||||
|                 break; | ||||
|         } | ||||
|         return convertedImage; | ||||
|     } | ||||
|      | ||||
|     private static void addImageToDocument(PDDocument doc, PDImageXObject image, boolean stretchToFit, boolean autoRotate) throws IOException { | ||||
|         boolean imageIsLandscape = image.getWidth() > image.getHeight(); | ||||
|         PDRectangle pageSize = PDRectangle.A4; | ||||
| @ -224,33 +177,6 @@ public class PdfUtils { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public static X509Certificate[] loadCertificateChainFromKeystore(InputStream keystoreInputStream, String keystorePassword) throws Exception { | ||||
|         KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); | ||||
|         keystore.load(keystoreInputStream, keystorePassword.toCharArray()); | ||||
| 
 | ||||
|         String alias = keystore.aliases().nextElement(); | ||||
|         Certificate[] certChain = keystore.getCertificateChain(alias); | ||||
|         X509Certificate[] x509CertChain = new X509Certificate[certChain.length]; | ||||
| 
 | ||||
|         for (int i = 0; i < certChain.length; i++) { | ||||
|             x509CertChain[i] = (X509Certificate) certChain[i]; | ||||
|         } | ||||
| 
 | ||||
|         return x509CertChain; | ||||
|     } | ||||
| 
 | ||||
|     public static KeyPair loadKeyPairFromKeystore(InputStream keystoreInputStream, String keystorePassword) throws Exception { | ||||
|         KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); | ||||
|         keystore.load(keystoreInputStream, keystorePassword.toCharArray()); | ||||
| 
 | ||||
|         String alias = keystore.aliases().nextElement(); | ||||
|         PrivateKey privateKey = (PrivateKey) keystore.getKey(alias, keystorePassword.toCharArray()); | ||||
|         Certificate cert = keystore.getCertificate(alias); | ||||
|         PublicKey publicKey = cert.getPublicKey(); | ||||
| 
 | ||||
|         return new KeyPair(publicKey, privateKey); | ||||
|     } | ||||
| 
 | ||||
|     public static byte[] overlayImage(byte[] pdfBytes, byte[] imageBytes, float x, float y, boolean everyPage) throws IOException { | ||||
| 
 | ||||
|         PDDocument document = PDDocument.load(new ByteArrayInputStream(pdfBytes)); | ||||
| @ -282,41 +208,7 @@ public class PdfUtils { | ||||
|         return baos.toByteArray(); | ||||
|     } | ||||
| 
 | ||||
|     public static ResponseEntity<byte[]> pdfDocToWebResponse(PDDocument document, String docName) throws IOException { | ||||
| 
 | ||||
|         // Open Byte Array and save document to it | ||||
|         ByteArrayOutputStream baos = new ByteArrayOutputStream(); | ||||
|         document.save(baos); | ||||
|         // Close the document | ||||
|         document.close(); | ||||
| 
 | ||||
|         return PdfUtils.boasToWebResponse(baos, docName); | ||||
|     } | ||||
|      | ||||
|     public static Long convertSizeToBytes(String sizeStr) { | ||||
|         if (sizeStr == null) { | ||||
|             return null; | ||||
|         } | ||||
| 
 | ||||
|         sizeStr = sizeStr.trim().toUpperCase(); | ||||
|         try { | ||||
|             if (sizeStr.endsWith("KB")) { | ||||
|                 return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024); | ||||
|             } else if (sizeStr.endsWith("MB")) { | ||||
|                 return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024 * 1024); | ||||
|             } else if (sizeStr.endsWith("GB")) { | ||||
|                 return (long) (Double.parseDouble(sizeStr.substring(0, sizeStr.length() - 2)) * 1024 * 1024 * 1024); | ||||
|             } else if (sizeStr.endsWith("B")) { | ||||
|                 return Long.parseLong(sizeStr.substring(0, sizeStr.length() - 1)); | ||||
|             } else { | ||||
|                 // Input string does not have a valid format, handle this case | ||||
|             } | ||||
|         } catch (NumberFormatException e) { | ||||
|             // The numeric part of the input string cannot be parsed, handle this case | ||||
|         } | ||||
|          | ||||
|         return null; | ||||
|     } | ||||
|     | ||||
| 
 | ||||
|      | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,50 @@ | ||||
| package stirling.software.SPDF.utils; | ||||
| 
 | ||||
| import java.io.ByteArrayOutputStream; | ||||
| import java.io.IOException; | ||||
| import java.net.URLEncoder; | ||||
| import java.nio.charset.StandardCharsets; | ||||
| 
 | ||||
| import org.apache.pdfbox.pdmodel.PDDocument; | ||||
| import org.springframework.http.HttpHeaders; | ||||
| import org.springframework.http.HttpStatus; | ||||
| import org.springframework.http.MediaType; | ||||
| import org.springframework.http.ResponseEntity; | ||||
| 
 | ||||
| public class WebResponseUtils { | ||||
| 
 | ||||
| 	public static ResponseEntity<byte[]> boasToWebResponse(ByteArrayOutputStream baos, String docName) throws IOException { | ||||
| 	    return WebResponseUtils.bytesToWebResponse(baos.toByteArray(), docName); | ||||
| 	} | ||||
| 
 | ||||
| 	public static ResponseEntity<byte[]> boasToWebResponse(ByteArrayOutputStream baos, String docName, MediaType mediaType) throws IOException { | ||||
| 	    return WebResponseUtils.bytesToWebResponse(baos.toByteArray(), docName, mediaType); | ||||
| 	} | ||||
| 
 | ||||
| 	public static ResponseEntity<byte[]> bytesToWebResponse(byte[] bytes, String docName, MediaType mediaType) throws IOException { | ||||
| 	 | ||||
| 	    // Return the PDF as a response | ||||
| 	    HttpHeaders headers = new HttpHeaders(); | ||||
| 	    headers.setContentType(mediaType); | ||||
| 	    headers.setContentLength(bytes.length); | ||||
| 	    String encodedDocName = URLEncoder.encode(docName, StandardCharsets.UTF_8.toString()).replaceAll("\\+", "%20"); | ||||
| 	    headers.setContentDispositionFormData("attachment", encodedDocName); | ||||
| 	    return new ResponseEntity<>(bytes, headers, HttpStatus.OK); | ||||
| 	} | ||||
| 
 | ||||
| 	public static ResponseEntity<byte[]> bytesToWebResponse(byte[] bytes, String docName) throws IOException { | ||||
| 	    return bytesToWebResponse(bytes, docName, MediaType.APPLICATION_PDF); | ||||
| 	} | ||||
| 
 | ||||
| 	public static ResponseEntity<byte[]> pdfDocToWebResponse(PDDocument document, String docName) throws IOException { | ||||
| 	 | ||||
| 	    // Open Byte Array and save document to it | ||||
| 	    ByteArrayOutputStream baos = new ByteArrayOutputStream(); | ||||
| 	    document.save(baos); | ||||
| 	    // Close the document | ||||
| 	    document.close(); | ||||
| 	 | ||||
| 	    return boasToWebResponse(baos, docName); | ||||
| 	} | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user