[ADD] PDF REST AHORA ACEPTA TAMBIEN FORM DATA

parent 52b19f6d
...@@ -10,6 +10,8 @@ import lombok.AllArgsConstructor; ...@@ -10,6 +10,8 @@ import lombok.AllArgsConstructor;
import web.multitask.trismegistoservices.services.PDFService; import web.multitask.trismegistoservices.services.PDFService;
import web.multitask.trismegistoservices.utils.CommonUtils; import web.multitask.trismegistoservices.utils.CommonUtils;
import java.util.Map;
@RestController @RestController
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
@RequestMapping("/pdf") @RequestMapping("/pdf")
...@@ -19,34 +21,48 @@ public class pdfRest { ...@@ -19,34 +21,48 @@ public class pdfRest {
PDFService pdfService; PDFService pdfService;
CommonUtils commonUtils; CommonUtils commonUtils;
@PostMapping("/public/html") @PostMapping(value = "/public/html", consumes = {MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public ResponseEntity<?> htmlToPdf(@RequestBody String json) { public ResponseEntity<?> htmlToPdf(@RequestParam Map<String, String> params, @RequestBody(required = false) String json) {
try { try {
String html;
String fileName;
boolean isBase64;
if (json != null && !json.isEmpty()) {
JSONObject jsonBody = new JSONObject(json); JSONObject jsonBody = new JSONObject(json);
byte[] bytes = pdfService.generatePdf(jsonBody.getString("html")); html = jsonBody.getString("html");
fileName = jsonBody.optString("file_name", "pdf.pdf");
isBase64 = jsonBody.optBoolean("base64");
} else {
html = params.get("html");
fileName = params.getOrDefault("file_name", "pdf.pdf");
isBase64 = Boolean.parseBoolean(params.get("base64"));
}
byte[] bytes = pdfService.generatePdf(html);
if(jsonBody.optBoolean("base64")){ if (isBase64) {
String base64 = commonUtils.byteToBase64(bytes); String base64 = commonUtils.byteToBase64(bytes);
return ResponseEntity.ok().body( return ResponseEntity.ok().body(
new JSONObject() new JSONObject()
.put("base64", base64) .put("base64", base64)
.put("file_name", jsonBody.optString("file_name", "pdf.pdf")) .put("file_name", fileName)
.put("status", true) .put("status", true)
.put("message", "OK") .put("message", "OK")
.toString()
); );
}else{ } else {
Resource resource = commonUtils.byteToResource(bytes, jsonBody.optString("file_name", "no_name.pdf")); Resource resource = commonUtils.byteToResource(bytes, fileName);
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + jsonBody.optString("file_name", "no_name.pdf")); headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
return ResponseEntity.ok() return ResponseEntity.ok()
.headers(headers) .headers(headers)
.contentLength(bytes.length) .contentLength(bytes.length)
.contentType(MediaType.APPLICATION_PDF) .contentType(MediaType.APPLICATION_PDF)
.body(resource); .body(resource);
} }
}catch (Exception e){ } catch (Exception e) {
System.out.println(e); System.err.println(e.getMessage());
return ResponseEntity.internalServerError().body(e.getMessage()); return ResponseEntity.internalServerError().body(e.getMessage());
} }
} }
......
...@@ -3,8 +3,6 @@ package web.multitask.trismegistoservices.services; ...@@ -3,8 +3,6 @@ package web.multitask.trismegistoservices.services;
import com.itextpdf.html2pdf.ConverterProperties; import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter; import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider; import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
import org.json.JSONArray;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.File; import java.io.File;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment