У меня есть следующий пружинный метод MVC, который генерирует PDF с использованием openpdf: < /p>
@PostMapping(path = "/report/**")
public ResponseEntity report(@RequestBody ReportRequest reportRequest) {
// get the media
try {
ApiReport report = reportRegistry.getReport(reportRequest.getReportId());
if (report == null) {
throw new ApiReportException("Report not found");
}
byte[] reportBytes = report.processReport(reportRequest.getParameters());
if (reportBytes == null || reportBytes.length == 0) {
throw new ApiReportException("Report length was 0");
}
HttpHeaders headers = new HttpHeaders();
headers.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=output.pdf");
headers.setContentType(MediaType.APPLICATION_PDF);
headers.setContentLength(reportBytes.length);
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
ResponseEntity result = new ResponseEntity(reportBytes, headers, HttpStatus.OK);
return result;
} catch (ReportException e) {
throw new ApiReportException(e.getMessage(), e);
}
}
< /code>
Создается отчет, а байты возвращаются в браузер. Что не происходит, так это то, что мне не поручено загружать файл, и приложение не открывается для обработки PDF.
Этот метод вызывается из углового приложения:
const response = this.$http.post(this.reportUrl, reportRequest, {headers:headers, responseType: "blob"});
return response;
< /code>
Я, вероятно, просто делаю здесь очень глупую ошибку. Если кто -то сможет указать на это, я буду признателен.
Подробнее здесь: https://stackoverflow.com/questions/794 ... r-download