Я пытаюсь создать PDF, а затем загрузить его автоматически. Я использую PDFBox для создания PDF, и он хорошо сохраняется локально, но как только я возвращаю его через ResponseEntity
или byte[]
, он становится пустым. Я хочу использовать сообщение, потому что я хочу отправить тело параметров, которые мне нужны для PDF.
Вот мой контроллер
@PostMapping(value="/documents/generate")
ResponseEntity<?> generateSampleTag(@RequestBody SampleTag sampleTag) {
log.info("inside generatePdfFromHtml method in DocumentController");
try(ByteArrayOutputStream byteArrayOutputStream = freePdfService.generatePdf(sampleTag)) {
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_PDF_VALUE);
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=sampleTag.pdf");
headers.add("Expires", "0");
headers.setCacheControl(CacheControl.noCache());
headers.add("Pragma", "public");
ByteArrayResource resource = new ByteArrayResource(byteArrayOutputStream.toByteArray());
return new ResponseEntity<>(resource, headers, HttpStatus.OK);
} catch (Exception e) {
log.error(e.getMessage());
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
Я пробовал различные потоки ввода / вывода и значения заголовков, и сейчас я только догадываюсь. Спасибо за помощь!
Я ответил ниже, но моя проблема была в том, что Swagger не мог загрузить его правильно. Почтальон работал.