use of com.openhtmltopdf.pdfboxout.PdfBoxRenderer in project alf.io by alfio-event.
the class TemplateProcessor method prepareItextRenderer.
public static PdfBoxRenderer prepareItextRenderer(String page) {
PdfRendererBuilder builder = new PdfRendererBuilder();
builder.withW3cDocument(DOMBuilder.jsoup2DOM(Jsoup.parse(page)), "");
PdfBoxRenderer renderer = builder.buildPdfRenderer();
try (InputStream is = new ClassPathResource("/alfio/font/DejaVuSansMono.ttf").getInputStream()) {
renderer.getFontResolver().addFont(() -> is, "DejaVu Sans Mono", null, null, false);
} catch (IOException e) {
log.warn("error while loading DejaVuSansMono.ttf font", e);
}
renderer.layout();
return renderer;
}
use of com.openhtmltopdf.pdfboxout.PdfBoxRenderer in project alf.io by alfio-event.
the class TicketController method generateTicketPdf.
@RequestMapping(value = "/event/{eventName}/ticket/{ticketIdentifier}/download-ticket", method = RequestMethod.GET)
public void generateTicketPdf(@PathVariable("eventName") String eventName, @PathVariable("ticketIdentifier") String ticketIdentifier, HttpServletRequest request, HttpServletResponse response) throws IOException, WriterException {
Optional<Triple<Event, TicketReservation, Ticket>> oData = ticketReservationManager.fetchCompleteAndAssigned(eventName, ticketIdentifier);
if (!oData.isPresent()) {
response.sendError(HttpServletResponse.SC_FORBIDDEN);
return;
}
Triple<Event, TicketReservation, Ticket> data = oData.get();
Ticket ticket = data.getRight();
response.setContentType("application/pdf");
response.addHeader("Content-Disposition", "attachment; filename=ticket-" + ticketIdentifier + ".pdf");
try (OutputStream os = response.getOutputStream()) {
PdfBoxRenderer renderer = preparePdfTicket(request, data.getLeft(), data.getMiddle(), ticket).generate(ticket);
if (renderer != null) {
renderer.createPDF(os);
}
}
}
Aggregations