Я использую среду Java Spring Boot, и мне нужно конвертировать Json в PDF. Проблема в том, что весь текст в PDF написан в одну строку, что означает, что разрывы строк не работают. В результате я получаю PDF, в котором первая строка пуста или пустой файл.
@GetMapping("/pdf/{Id}")
@Secured({"ROLE_ADMIN", "ROLE_OPERATOR", "ROLE_GUEST"})
public ResponseEntity<PDDocument> findOnePdfByIdJob(@PathVariable("Id") Long id) throws DocumentException, IOException {
Job job = jobService.findById(id);
if (job == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
ObjectMapper objectMapper = new ObjectMapper();
String jsonInString = objectMapper.writeValueAsString(job);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
JsonElement je = jp.parse(jsonInString);
String prettyJsonString = gson.toJson(je);
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.setFont(PDType1Font.COURIER, 12);
contentStream.beginText();
contentStream.showText(jsonInString);
contentStream.endText();
contentStream.close();
document.save("pdfBoxHelloWorld.pdf");
document.close();
HttpHeaders headers = new HttpHeaders();
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
return ResponseEntity.ok()
.headers(headers)
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(document);
}
В результате я получаю PDF, в котором все написано в одну строку. То есть текст не может быть прочитан .... Первая строка становится пустой строкой.