|
@@ -0,0 +1,81 @@ |
|
|
|
|
|
package com.ffii.lioner.modules.lioner.web; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
import java.io.InputStream; |
|
|
|
|
|
import java.nio.file.Files; |
|
|
|
|
|
import java.nio.file.Path; |
|
|
|
|
|
import java.nio.file.Paths; |
|
|
|
|
|
import java.util.HashMap; |
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
import java.util.UUID; |
|
|
|
|
|
|
|
|
|
|
|
import org.springframework.core.io.ClassPathResource; |
|
|
|
|
|
import org.springframework.http.HttpHeaders; |
|
|
|
|
|
import org.springframework.http.HttpStatus; |
|
|
|
|
|
import org.springframework.http.MediaType; |
|
|
|
|
|
import org.springframework.http.ResponseEntity; |
|
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping; |
|
|
|
|
|
import org.springframework.web.bind.annotation.PostMapping; |
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestBody; |
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping; |
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestParam; |
|
|
|
|
|
import org.springframework.web.bind.annotation.RestController; |
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
|
|
|
|
|
|
|
|
|
@RestController |
|
|
|
|
|
@RequestMapping("/api/pdf") |
|
|
|
|
|
public class PdfController { |
|
|
|
|
|
|
|
|
|
|
|
// Endpoint to serve the initial template PDF |
|
|
|
|
|
@GetMapping(value = "/template", produces = MediaType.APPLICATION_PDF_VALUE) |
|
|
|
|
|
public ResponseEntity<byte[]> getPdfTemplate() throws IOException { |
|
|
|
|
|
// Ensure your template PDF is in src/main/resources/static/ |
|
|
|
|
|
ClassPathResource pdfFile = new ClassPathResource("static/template_form.pdf"); |
|
|
|
|
|
if (!pdfFile.exists()) { |
|
|
|
|
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("PDF template not found.".getBytes()); |
|
|
|
|
|
} |
|
|
|
|
|
byte[] pdfBytes; |
|
|
|
|
|
try (InputStream is = pdfFile.getInputStream()) { |
|
|
|
|
|
pdfBytes = is.readAllBytes(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
HttpHeaders headers = new HttpHeaders(); |
|
|
|
|
|
headers.setContentDispositionFormData("inline", "template_form.pdf"); |
|
|
|
|
|
headers.setContentType(MediaType.APPLICATION_PDF); |
|
|
|
|
|
return new ResponseEntity<>(pdfBytes, headers, HttpStatus.OK); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Endpoint to receive the filled PDF from the frontend |
|
|
|
|
|
@PostMapping(value = "/saveFilled", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) |
|
|
|
|
|
public ResponseEntity<Map<String, String>> saveFilledPdf(@RequestParam("file") MultipartFile file) { |
|
|
|
|
|
if (file.isEmpty()) { |
|
|
|
|
|
return ResponseEntity.badRequest().body(Map.of("message", "No file uploaded.")); |
|
|
|
|
|
} |
|
|
|
|
|
try { |
|
|
|
|
|
// Generate a unique filename and save to an 'uploads' directory |
|
|
|
|
|
String fileName = "filled_form_" + UUID.randomUUID().toString() + ".pdf"; |
|
|
|
|
|
Path filePath = Paths.get("uploads", fileName); |
|
|
|
|
|
Files.createDirectories(filePath.getParent()); // Ensure directory exists |
|
|
|
|
|
Files.copy(file.getInputStream(), filePath); |
|
|
|
|
|
|
|
|
|
|
|
Map<String, String> response = new HashMap<>(); |
|
|
|
|
|
response.put("message", "PDF saved successfully: " + fileName); |
|
|
|
|
|
response.put("filePath", filePath.toString()); |
|
|
|
|
|
return ResponseEntity.ok(response); |
|
|
|
|
|
|
|
|
|
|
|
} catch (IOException e) { |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) |
|
|
|
|
|
.body(Map.of("message", "Failed to save PDF: " + e.getMessage())); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Optional: Endpoint to receive just the form data (e.g., JSON) |
|
|
|
|
|
@PostMapping("/saveFormData") |
|
|
|
|
|
public ResponseEntity<Map<String, String>> saveFormData(@RequestBody Map<String, Object> formData) { |
|
|
|
|
|
System.out.println("Received form data: " + formData); |
|
|
|
|
|
Map<String, String> response = new HashMap<>(); |
|
|
|
|
|
response.put("message", "Form data received and processed successfully."); |
|
|
|
|
|
return ResponseEntity.ok(response); |
|
|
|
|
|
} |
|
|
|
|
|
} |