Как передать данные pdf из HttpResponse в ResponseEntity при загрузке Spring - PullRequest
0 голосов
/ 05 августа 2020

У меня есть объект HttpResponse, который я нашел из вызова rest, я хочу получить содержимое pdf, присутствующее в объекте HttpResponse, в объект ResponseEntity. Я написал приведенный ниже код для преобразования. но он создает пустой PDF-файл размером 33 КБ, но фактический размер составляет 22 КБ.

@GetMapping(value = "/getdata" ,produces = "application/pdf" )
public ResponseEntity<?> getAccount() throws Exception {    
        HttpResponse response = getData();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_PDF);
        final InputStream inStream = response.getEntity().getContent();
        InputStreamResource inputStreamResource = new InputStreamResource(inStream);
        
        String filename = "output.pdf";
        headers.setContentDispositionFormData(filename, filename);
        headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
        return new ResponseEntity<>(inputStreamResource, headers, HttpStatus.OK);
        
}

1 Ответ

0 голосов
/ 05 августа 2020

Вы не можете читать содержимое PDF напрямую в Java.

Вам необходимо использовать специальную библиотеку, например pdfbox.

Вы можете найти образец кода там

Пример кода:

File file = new File("D://Sample.pdf");
PDDocument document = PDDocument.load(file);
//Instantiate PDFTextStripper class
PDFTextStripper pdfStripper = new PDFTextStripper();
//Retrieving text from PDF document
String text = pdfStripper.getText(document);
...