Browse Source

added for pdf form open and save

master
[email protected] 2 months ago
parent
commit
b71a03b067
1 changed files with 81 additions and 0 deletions
  1. +81
    -0
      src/main/java/com/ffii/lioner/modules/lioner/web/PdfController.java

+ 81
- 0
src/main/java/com/ffii/lioner/modules/lioner/web/PdfController.java View File

@@ -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);
}
}

Loading…
Cancel
Save