Example usage for org.jsoup.nodes DataNode createFromEncoded

List of usage examples for org.jsoup.nodes DataNode createFromEncoded

Introduction

In this page you can find the example usage for org.jsoup.nodes DataNode createFromEncoded.

Prototype

public static DataNode createFromEncoded(String encodedData, String baseUri) 

Source Link

Document

Create a new DataNode from HTML encoded data.

Usage

From source file:com.jaspersoft.android.jaspermobile.data.repository.report.page.HtmlPageCreator.java

@Override
@NonNull/*from  w  ww.j  ava  2  s.com*/
public ReportPage create() throws Exception {
    String range = pageRequest.getRange();
    PageRange pageRange = PageRange.parse(range);

    ReportExportOptions options = ReportExportOptions.builder()
            .withFormat(ReportFormat.valueOf(pageRequest.getFormat())).withPageRange(pageRange).build();

    ReportExport export = execution.export(options);
    ReportExportOutput output = export.download();

    InputStream reportExport = output.getStream();
    InputStream customScript = context.getAssets().open("rest-report.js");

    try {
        Reader reader = new InputStreamReader(customScript);
        Template template = Mustache.compiler().compile(reader);

        int pageIndex = Integer.valueOf(range) - 1;
        Map<String, Object> data = new HashMap<>();
        data.put("jasperPrintName", execution.getExecutionId());
        data.put("pageIndex", pageIndex);
        data.put("isPro", server.isProEdition());
        String customJs = template.execute(data);

        DataNode indexHeadScript = DataNode.createFromEncoded("<script>" + customJs + "</script>", "");

        Document document = Jsoup.parse(reportExport, Charset.defaultCharset().name(), "");
        Elements head = document.getElementsByTag("head");
        head.append(indexHeadScript.toString());

        byte[] exportContent = document.toString().getBytes(Charset.forName("UTF-8"));
        return new ReportPage(exportContent, output.isFinal());
    } finally {
        IOUtils.closeQuietly(reportExport);
        IOUtils.closeQuietly(customScript);
    }
}