Closed Hearen closed 5 years ago
html exporter to ensure image is properly exported
@Override
public void prepareHtmlResponse(ReportRequestVo reportRequestVo, HttpServletResponse response) {
if (!hasValidProviders(reportRequestVo)) {
return;
}
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
HtmlExporter exporter = new HtmlExporter();
exporter.setExporterInput(new SimpleExporterInput(getJasperPrint(reportRequestVo)));
exporter.setExporterOutput(getCustomHtmlExporter(servletOutputStream));
exporter.exportReport();
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException | IOException ignored) {
log.error("Preparing html response failed for {}", reportRequestVo, ignored);
}
}
private SimpleHtmlExporterOutput getCustomHtmlExporter(ServletOutputStream servletOutputStream) {
Map<String, String> images = new HashMap<>();
SimpleHtmlExporterOutput simpleHtmlExporterOutput = new SimpleHtmlExporterOutput(servletOutputStream);
simpleHtmlExporterOutput.setImageHandler(new HtmlResourceHandler() {
@Override
public void handleResource(String id, byte[] data) {
images.put(id, "data:image/jpg;base64," + Base64.encodeBytes(data));
}
@Override
public String getResourcePath(String id) {
return images.get(id);
}
});
return simpleHtmlExporterOutput;
}
https://www.tutorialspoint.com/jasper_reports/jasper_report_fonts.htm https://www.javatips.net/api/net.sf.jasperreports.engine.jasperfillmanager http://jasperreports.sourceforge.net/api/