Spring REST - 通过请求传递 PDF

Spring REST - pass PDF through a request

我有 2 个 Spring 启动应用程序... 第一个应用程序应该生成一个 PDF 并 return 它...第二个应用程序正在调用第一个应用程序以获取 pdf 并 return 它给用户...

这里我正在生成一个 pdf。

@RequestMapping(value = "/html2pdf", method = RequestMethod.GET)
    public ResponseEntity<InputStreamResource> report(@RequestParam() String htmlContent) {

        try {
            ByteArrayInputStream pdfDocument = pdfGenerator.generatePDF(htmlContent);

            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_PDF);
            headers.add("Content-Disposition", "inline; filename=generated.pdf");

            return ResponseEntity
                    .ok()
                    .headers(headers)
                    .body(new InputStreamResource(pdfDocument));
        } catch (IOException e) {
            return ResponseEntity.badRequest().build();
        }
    }

我在这里尝试调用第一个应用程序和 return pdf...

@RequestMapping(value = "/pdfreport", method = RequestMethod.GET)
    public ResponseEntity<InputStreamResource> report() {

        ResourceHttpMessageConverter resourceHttpMessageConverter = new ResourceHttpMessageConverter();

        List<MediaType> supportedApplicationTypes = new ArrayList<>();
        MediaType pdfApplication = new MediaType("application", "pdf");
        supportedApplicationTypes.add(pdfApplication);

        resourceHttpMessageConverter.setSupportedMediaTypes(supportedApplicationTypes);
        List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
        messageConverters.add(resourceHttpMessageConverter);

        RestTemplate pdfGenerator = new RestTemplate();
        pdfGenerator.setMessageConverters(messageConverters);

        ResponseEntity<InputStreamResource> response = pdfGenerator.getForEntity("http://localhost:1080/pdf-generator/html2pdf?htmlContent=<h2>HUHU</h2>", InputStreamResource.class);

        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Disposition", "inline; filename=generated.pdf");
        headers.setContentType(MediaType.APPLICATION_PDF);

        return ResponseEntity
                .ok()
                .headers(headers)
                .body(response.getBody());
    }

在这个星座中我得到以下错误:

java.io.IOException: stream is closed

我已经用 ResponseExtractor 试过了...

这里有什么问题?我怎样才能更容易地解决它?

谢谢

InputStreamResource 仅应在没有其他特定 Resource 实现适用时使用。特别是,尽可能使用 ByteArrayResource 或任何基于文件的 Resource 实现。

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/io/InputStreamResource.html