Как сделать просмотр Pdf Spring Boot - PullRequest
0 голосов
/ 15 февраля 2019

Здесь я создал API для просмотра PDF-части.Это мой URL-адрес API: http://localhost:8082/api/layout/samePdfview/20 Проблемы возникают, когда я впервые вызываю этот URL-адрес API, а также показываю сообщение об ошибке

"java.io.FileNotFoundException: ресурс пути к классу [static / layout /pdf / 20190215163504_editedLandscape_layoutPort.pdf] не может быть открыт, потому что он не существует "

Работает, когда сервер останавливается и снова запускается, что отображается pdf.Я не мог найти, в чем проблема, кто-нибудь, пожалуйста, помогите мне

@RequestMapping(value = "/diffPdfview/{id}", method = RequestMethod.GET ,produces ={MediaType.APPLICATION_PDF_VALUE} )

    public ResponseEntity<InputStreamResource> getDiffPdf(@PathVariable("id") int id, HttpServletResponse response) throws IOException {
        List<LayoutEntity> getdiffPdf = layoutRepo.findViewImages(id,1);//status=1
        String diffPdf = getdiffPdf.get(0).getdLayoutPath();
        String diffPdfStr = diffPdf;
        diffPdfStr = diffPdfStr.substring(diffPdfStr.lastIndexOf("/"));

        return ResponseEntity
                .ok()
                .body(new InputStreamResource(new ClassPathResource("static/layout/pdf"+diffPdfStr).getInputStream()));
    }

1 Ответ

0 голосов
/ 15 февраля 2019

попробуйте это:

 public ResponseEntity<byte[]> getDiffPdf(@PathVariable("id") int id, HttpServletResponse response) throws IOException {
    List<LayoutEntity> getdiffPdf = layoutRepo.findViewImages(id,1);//status=1
    String diffPdf = getdiffPdf.get(0).getdLayoutPath();
    String diffPdfStr = diffPdf;
    diffPdfStr = diffPdfStr.substring(diffPdfStr.lastIndexOf("/"));
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.parseMediaType("application/pdf"));
    String filename = diffPdfStr;
    headers.add("content-disposition", "inline;filename=" + filename); 
    headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
    Path pdfPath = Paths.get("static/layout/pdf"+diffPdfStr);            //"/path/to/file.pdf"
    byte[] pdf = Files.readAllBytes(pdfPath);
    ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(pdf, headers, HttpStatus.OK);
    return response;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...