mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-10-25 11:17:28 +02:00 
			
		
		
		
	thirs party js folder
This commit is contained in:
		
							parent
							
								
									15d39413f3
								
							
						
					
					
						commit
						6793fd5bc7
					
				| @ -26,7 +26,8 @@ import io.swagger.v3.oas.annotations.Operation; | |||||||
| import io.swagger.v3.oas.annotations.Parameter; | import io.swagger.v3.oas.annotations.Parameter; | ||||||
| import io.swagger.v3.oas.annotations.media.Schema; | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
| import stirling.software.SPDF.utils.WebResponseUtils; | import stirling.software.SPDF.utils.WebResponseUtils; | ||||||
| 
 | import java.util.HashMap; | ||||||
|  | import java.util.Map; | ||||||
| @RestController | @RestController | ||||||
| public class ScalePagesController { | public class ScalePagesController { | ||||||
| 
 | 
 | ||||||
| @ -34,15 +35,49 @@ public class ScalePagesController { | |||||||
| 
 | 
 | ||||||
| 	@PostMapping(value = "/scale-pages", consumes = "multipart/form-data") | 	@PostMapping(value = "/scale-pages", consumes = "multipart/form-data") | ||||||
| 	@Operation(summary = "Change the size of a PDF page/document", description = "This operation takes an input PDF file and the size to scale the pages to in the output PDF file.") | 	@Operation(summary = "Change the size of a PDF page/document", description = "This operation takes an input PDF file and the size to scale the pages to in the output PDF file.") | ||||||
| 	public ResponseEntity<byte[]> mergeMultiplePagesIntoOne( | 	public ResponseEntity<byte[]> scalePages( | ||||||
| 			@Parameter(description = "The input PDF file", required = true) @RequestParam("fileInput") MultipartFile file, | 	    @Parameter(description = "The input PDF file", required = true) @RequestParam("fileInput") MultipartFile file, | ||||||
| 			@Parameter(description = "The scale of pages in the output PDF. Acceptable values are A4.", required = true, schema = @Schema(type = "String", allowableValues = { "A4" })) @RequestParam("pageSize") String targetPageSize, | 	    @Parameter(description = "The scale of pages in the output PDF. Acceptable values are A0-A10, B0-B9, LETTER, TABLOID, LEDGER, LEGAL, EXECUTIVE.", required = true, schema = @Schema(type = "String", allowableValues = { "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "LETTER", "TABLOID", "LEDGER", "LEGAL", "EXECUTIVE" })) @RequestParam("pageSize") String targetPageSize, | ||||||
|             @Parameter(description = "The scale of the content on the pages of the output PDF. Acceptable values are floats.", required = true, schema = @Schema(type = "float")) @RequestParam("scaleFactor") float scaleFactor) | 	    @Parameter(description = "The scale of the content on the pages of the output PDF. Acceptable values are floats.", required = true, schema = @Schema(type = "float")) @RequestParam("scaleFactor") float scaleFactor) | ||||||
| 			throws IOException { | 	    throws IOException { | ||||||
|  | 
 | ||||||
|  | 		Map<String, PageSize> sizeMap = new HashMap<>(); | ||||||
|  | 	    // Add A0 - A10 | ||||||
|  | 	    sizeMap.put("A0", PageSize.A0); | ||||||
|  | 	    sizeMap.put("A1", PageSize.A1); | ||||||
|  | 	    sizeMap.put("A2", PageSize.A2); | ||||||
|  | 	    sizeMap.put("A3", PageSize.A3); | ||||||
|  | 	    sizeMap.put("A4", PageSize.A4); | ||||||
|  | 	    sizeMap.put("A5", PageSize.A5); | ||||||
|  | 	    sizeMap.put("A6", PageSize.A6); | ||||||
|  | 	    sizeMap.put("A7", PageSize.A7); | ||||||
|  | 	    sizeMap.put("A8", PageSize.A8); | ||||||
|  | 	    sizeMap.put("A9", PageSize.A9); | ||||||
|  | 	    sizeMap.put("A10", PageSize.A10); | ||||||
|  | 	    // Add B0 - B9 | ||||||
|  | 	    sizeMap.put("B0", PageSize.B0); | ||||||
|  | 	    sizeMap.put("B1", PageSize.B1); | ||||||
|  | 	    sizeMap.put("B2", PageSize.B2); | ||||||
|  | 	    sizeMap.put("B3", PageSize.B3); | ||||||
|  | 	    sizeMap.put("B4", PageSize.B4); | ||||||
|  | 	    sizeMap.put("B5", PageSize.B5); | ||||||
|  | 	    sizeMap.put("B6", PageSize.B6); | ||||||
|  | 	    sizeMap.put("B7", PageSize.B7); | ||||||
|  | 	    sizeMap.put("B8", PageSize.B8); | ||||||
|  | 	    sizeMap.put("B9", PageSize.B9); | ||||||
|  | 	    // Add other sizes | ||||||
|  | 	    sizeMap.put("LETTER", PageSize.LETTER); | ||||||
|  | 	    sizeMap.put("TABLOID", PageSize.TABLOID); | ||||||
|  | 	    sizeMap.put("LEDGER", PageSize.LEDGER); | ||||||
|  | 	    sizeMap.put("LEGAL", PageSize.LEGAL); | ||||||
|  | 	    sizeMap.put("EXECUTIVE", PageSize.EXECUTIVE); | ||||||
|  | 	     | ||||||
|  | 	    if (!sizeMap.containsKey(targetPageSize)) { | ||||||
|  | 	        throw new IllegalArgumentException("Invalid pageSize. It must be one of the following: A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10"); | ||||||
|  | 	    } | ||||||
|  | 		 | ||||||
|  | 		PageSize pageSize = sizeMap.get(targetPageSize); | ||||||
| 		 | 		 | ||||||
| 		if (!targetPageSize.equals("A4")) { |  | ||||||
| 			throw new IllegalArgumentException("pageSize must be A4"); |  | ||||||
| 		} |  | ||||||
| 
 | 
 | ||||||
| 		byte[] bytes = file.getBytes(); | 		byte[] bytes = file.getBytes(); | ||||||
| 		PdfReader reader = new PdfReader(new ByteArrayInputStream(bytes)); | 		PdfReader reader = new PdfReader(new ByteArrayInputStream(bytes)); | ||||||
| @ -52,7 +87,7 @@ public class ScalePagesController { | |||||||
| 		PdfWriter writer = new PdfWriter(baos); | 		PdfWriter writer = new PdfWriter(baos); | ||||||
| 		PdfDocument outputPdf = new PdfDocument(writer); | 		PdfDocument outputPdf = new PdfDocument(writer); | ||||||
| 		 | 		 | ||||||
| 		PageSize pageSize = new PageSize(PageSize.A4); // TODO: This (and all other PageSize.A4) need to be dynamically changed in response to targetPageSize | 		 | ||||||
| 	     | 	     | ||||||
| 		int totalPages = pdfDoc.getNumberOfPages(); | 		int totalPages = pdfDoc.getNumberOfPages(); | ||||||
| 
 | 
 | ||||||
| @ -62,14 +97,14 @@ public class ScalePagesController { | |||||||
| 
 | 
 | ||||||
| 			// Get the page and calculate scaling factors | 			// Get the page and calculate scaling factors | ||||||
| 			Rectangle rect = pdfDoc.getPage(i).getPageSize(); | 			Rectangle rect = pdfDoc.getPage(i).getPageSize(); | ||||||
| 			float scaleWidth = PageSize.A4.getWidth() / rect.getWidth(); | 			float scaleWidth = pageSize.getWidth() / rect.getWidth(); | ||||||
| 			float scaleHeight = PageSize.A4.getHeight() / rect.getHeight(); | 			float scaleHeight = pageSize.getHeight() / rect.getHeight(); | ||||||
| 			float scale = Math.min(scaleWidth, scaleHeight) * scaleFactor; | 			float scale = Math.min(scaleWidth, scaleHeight) * scaleFactor; | ||||||
|             System.out.println("Scale: " + scale); |             System.out.println("Scale: " + scale); | ||||||
| 
 | 
 | ||||||
| 			PdfFormXObject formXObject = pdfDoc.getPage(i).copyAsFormXObject(outputPdf); | 			PdfFormXObject formXObject = pdfDoc.getPage(i).copyAsFormXObject(outputPdf); | ||||||
| 			float x = (PageSize.A4.getWidth() - rect.getWidth() * scale) / 2; // Center Page | 			float x = (pageSize.getWidth() - rect.getWidth() * scale) / 2; // Center Page | ||||||
| 			float y = (PageSize.A4.getHeight() - rect.getHeight() * scale) / 2; | 			float y = (pageSize.getHeight() - rect.getHeight() * scale) / 2; | ||||||
| 
 | 
 | ||||||
| 			// Save the graphics state, apply the transformations, add the object, and then | 			// Save the graphics state, apply the transformations, add the object, and then | ||||||
| 			// restore the graphics state | 			// restore the graphics state | ||||||
|  | |||||||
| @ -132,7 +132,7 @@ home.pageLayout.title=Multi-Page Layout | |||||||
| home.pageLayout.desc=Merge multiple pages of a PDF document into a single page | home.pageLayout.desc=Merge multiple pages of a PDF document into a single page | ||||||
| 
 | 
 | ||||||
| home.scalePages.title=Adjust page-scale | home.scalePages.title=Adjust page-scale | ||||||
| home.scalePages.desc=Change the size of the pages of a PDF document | home.scalePages.desc=Change the size of page contents while maintaining a set page-size | ||||||
| 
 | 
 | ||||||
| error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect | error.pdfPassword=The PDF Document is passworded and either the password was not provided or was incorrect | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -8,14 +8,14 @@ | |||||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||||
| 
 | 
 | ||||||
| <!-- jQuery --> | <!-- jQuery --> | ||||||
| <script src="js/jquery.min.js"></script> | <script src="js/thirdParty/jquery.min.js"></script> | ||||||
| 
 | 
 | ||||||
| <!-- jQuery --> | <!-- jQuery --> | ||||||
| <script src="js/jszip.min.js"></script> | <script src="js/thirdParty/jszip.min.js"></script> | ||||||
| 
 | 
 | ||||||
| <!-- Bootstrap --> | <!-- Bootstrap --> | ||||||
| <script src="js/popper.min.js"></script> | <script src="js/thirdParty/popper.min.js"></script> | ||||||
| <script src="js/bootstrap.min.js"></script> | <script src="js/thirdParty/bootstrap.min.js"></script> | ||||||
| <link rel="stylesheet" href="css/bootstrap.min.css"> | <link rel="stylesheet" href="css/bootstrap.min.css"> | ||||||
| <link rel="stylesheet" href="css/bootstrap-icons.css"> | <link rel="stylesheet" href="css/bootstrap-icons.css"> | ||||||
| 
 | 
 | ||||||
| @ -23,7 +23,7 @@ | |||||||
| <script src="pdfjs/pdf.js"></script> | <script src="pdfjs/pdf.js"></script> | ||||||
| 
 | 
 | ||||||
| <!-- PDF-Lib --> | <!-- PDF-Lib --> | ||||||
| <script src="js/pdf-lib.min.js"></script> | <script src="js/thirdParty/pdf-lib.min.js"></script> | ||||||
| 
 | 
 | ||||||
| <!-- Custom --> | <!-- Custom --> | ||||||
| <link rel="stylesheet" href="css/general.css"> | <link rel="stylesheet" href="css/general.css"> | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| 
 | 
 | ||||||
| <head> | <head> | ||||||
|     <th:block th:insert="~{fragments/common :: head(title=#{addImage.title})}"></th:block> |     <th:block th:insert="~{fragments/common :: head(title=#{addImage.title})}"></th:block> | ||||||
|     <script src="js/interact.min.js"></script> |     <script src="js/thirdParty/interact.min.js"></script> | ||||||
| 
 | 
 | ||||||
| </head> | </head> | ||||||
| <body> | <body> | ||||||
|  | |||||||
| @ -19,7 +19,33 @@ | |||||||
|                             <div class="form-group"> |                             <div class="form-group"> | ||||||
| 	                            <label for="pageSize" th:text="#{scalePages.pageSize}"></label> | 	                            <label for="pageSize" th:text="#{scalePages.pageSize}"></label> | ||||||
| 							    <select id="pageSize" name="pageSize" required> | 							    <select id="pageSize" name="pageSize" required> | ||||||
| 							        <option value="A4">A4</option> | 							         | ||||||
|  | 							        <option value="A0">A0</option> | ||||||
|  | 							        <option value="A1">A1</option> | ||||||
|  | 							        <option value="A2">A2</option> | ||||||
|  | 							        <option value="A3">A3</option> | ||||||
|  | 							        <option value="A4" selected>A4</option> | ||||||
|  | 							        <option value="A5">A5</option> | ||||||
|  | 							        <option value="A6">A6</option> | ||||||
|  | 							        <option value="A7">A7</option> | ||||||
|  | 							        <option value="A8">A8</option> | ||||||
|  | 							        <option value="A9">A9</option> | ||||||
|  | 							        <option value="A10">A10</option> | ||||||
|  | 							        <option value="B0">B0</option> | ||||||
|  | 							        <option value="B1">B1</option> | ||||||
|  | 							        <option value="B2">B2</option> | ||||||
|  | 							        <option value="B3">B3</option> | ||||||
|  | 							        <option value="B4">B4</option> | ||||||
|  | 							        <option value="B5">B5</option> | ||||||
|  | 							        <option value="B6">B6</option> | ||||||
|  | 							        <option value="B7">B7</option> | ||||||
|  | 							        <option value="B8">B8</option> | ||||||
|  | 							        <option value="B9">B9</option> | ||||||
|  | 							        <option value="LETTER">Letter</option> | ||||||
|  | 							        <option value="LEGAL">Legal</option> | ||||||
|  | 							        <option value="EXECUTIVE">Executive</option> | ||||||
|  | 							        <option value="TABLOID">Tabloid</option> | ||||||
|  | 							        <option value="LEDGER">Ledger</option> | ||||||
| 							    </select> | 							    </select> | ||||||
| 						    </div> | 						    </div> | ||||||
|                             <div class="form-group"> |                             <div class="form-group"> | ||||||
|  | |||||||
| @ -3,8 +3,8 @@ | |||||||
| 
 | 
 | ||||||
| <head> | <head> | ||||||
|     <th:block th:insert="~{fragments/common :: head(title=#{sign.title})}"></th:block> |     <th:block th:insert="~{fragments/common :: head(title=#{sign.title})}"></th:block> | ||||||
|     <script src="js/signature_pad.umd.min.js"></script> |     <script src="js/thirdParty/signature_pad.umd.min.js"></script> | ||||||
|     <script src="js/interact.min.js"></script> |     <script src="js/thirdParty/interact.min.js"></script> | ||||||
| 
 | 
 | ||||||
| </head> | </head> | ||||||
| <style> | <style> | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user