Hearen / AllInJava

Everything about Java I know and should know.
GNU General Public License v3.0
0 stars 0 forks source link

jasperreports #141

Closed Hearen closed 5 years ago

Hearen commented 5 years ago

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/

Hearen commented 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;
    }