Example usage for com.itextpdf.tool.xml XMLWorkerHelper getInstance

List of usage examples for com.itextpdf.tool.xml XMLWorkerHelper getInstance

Introduction

In this page you can find the example usage for com.itextpdf.tool.xml XMLWorkerHelper getInstance.

Prototype

public synchronized static XMLWorkerHelper getInstance() 

Source Link

Document

Get a Singleton XMLWorkerHelper

Usage

From source file:de.tuttas.servlets.DokuServlet.java

private Document createVerlauf(Klasse kl, String kopf, Date parsedFrom, Date parsedTo, OutputStream out,
        String filter1, String filter2, String me) throws ParseException, IOException, DocumentException {
    Document document = new Document();
    /* Basic PDF Creation inside servlet */
    PdfWriter writer = PdfWriter.getInstance(document, out);
    StringBuilder htmlString = new StringBuilder();
    htmlString.append(kopf);//from w w w  .  j a va 2 s . c o  m
    /* Verlauf einfgen */
    Query query = em.createNamedQuery("findVerlaufbyKlasse");
    query.setParameter("paramKName", kl.getKNAME());
    query.setParameter("paramFromDate", new java.sql.Date(parsedFrom.getTime()));
    query.setParameter("paramToDate", new java.sql.Date(parsedTo.getTime()));
    List<Verlauf> overlauf = query.getResultList();
    List<Verlauf> verlauf = new ArrayList<>();

    /**
     * Filtern der oVerlauf Liste
     */
    for (Verlauf v : overlauf) {
        if (filter1.equals("eigeneEintraege")) {
            if (v.getID_LEHRER().equals(me)) {
                if (filter2.equals("alle") || filter2.equals(v.getID_LERNFELD())) {
                    verlauf.add(v);
                }
            }
        } else {
            if (filter2.equals("alle") || filter2.equals(v.getID_LERNFELD())) {
                verlauf.add(v);
            }
        }
    }

    Log.d("Result List:" + verlauf);
    htmlString.append(
            "<table  align='center' width='100%' style=\"border: 2px solid black; border-collapse: collapse;\">");
    String tagZeile = Verlauf.getTRHead();
    htmlString.append(tagZeile);
    String tag = " ";
    int kw = -1;
    document.open();
    boolean firstPage = true;
    for (Verlauf v : verlauf) {
        String str = v.getDATUM().toString();
        if (str.compareTo(tag) == 0) {
            htmlString.append(v.toHTML());
        } // ein neuer Tag
        else {
            if (kw == -1) {
                kw = v.getKw();
            }
            // Jede Woche eine neue Seite!
            if (!firstPage && kw != v.getKw()) {
                kw = v.getKw();
                htmlString.append("</table>");
                Log.d("html String=" + htmlString.toString());
                //document.add(new Paragraph("Tutorial to Generate PDF using Servlet"));
                InputStream is = new ByteArrayInputStream(htmlString.toString().getBytes());
                // Bild einfgen
                String url = "http://www.mmbbs.de/fileadmin/template/mmbbs/gfx/mmbbs_logo_druck.gif";
                Image image = Image.getInstance(url);
                image.setAbsolutePosition(45f, 720f);
                image.scalePercent(50f);
                document.add(image);
                XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
                document.newPage();
                htmlString = new StringBuilder();
                htmlString.append(kopf);
                htmlString.append(
                        "<table  align='center' width='100%' style=\"border: 2px solid black; border-collapse: collapse;\">");
                htmlString.append(tagZeile);
                Log.d("weiter mit neuer Seite");
            }
            htmlString.append("<tr>");
            htmlString.append(
                    "<td colspan=\"6\" align=\"center\" style=\"background-color: #cccccc; padding:4px;border: 1px solid black;\">KW "
                            + v.getKw() + " / " + v.getWochentag() + " " + str.substring(0, str.indexOf(" "))
                            + "</td>");
            htmlString.append("</tr>");
            htmlString.append(v.toHTML());
            firstPage = false;
            tag = str;
        }
    }
    htmlString.append("</table>");
    Log.d("html String Rest=" + htmlString.toString());
    //document.add(new Paragraph("Tutorial to Generate PDF using Servlet"));
    InputStream is = new ByteArrayInputStream(htmlString.toString().getBytes());
    // Bild einfgen
    String url = "http://www.mmbbs.de/fileadmin/template/mmbbs/gfx/mmbbs_logo_druck.gif";
    Image image = Image.getInstance(url);
    image.setAbsolutePosition(45f, 720f);
    image.scalePercent(50f);
    document.add(image);
    XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
    document.close();
    return document;
}

From source file:de.tuttas.servlets.DokuServlet.java

private Document printHead(PdfWriter writer, Document document, StringBuilder htmlString, OutputStream out,
        Image image) throws DocumentException, BadElementException, IOException {
    // Dokument erzeugen
    InputStream is = new ByteArrayInputStream(htmlString.toString().getBytes());

    Log.d("document=" + document + " image=" + image);
    document.add(image);/*from   w  w w  . jav  a2 s  .com*/
    XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
    return document;
}

From source file:de.tuttas.servlets.MailServlet.java

private void createPdf(HttpServletResponse response, String recipient, String content, String klasse,
        String lehrerId) {/*from   ww  w. ja v  a 2  s.  c om*/
    OutputStream out = null;
    try {
        out = response.getOutputStream();
        Log.d("Mail versandt erfolgreich erzeuge pdf Dokumentation! out=" + out);
        response.setContentType("application/pdf");
        response.addHeader("Content-Disposition",
                "attachment; filename=Fehlzeitenbericht_" + recipient + ".pdf");
        String kopf = "";
        kopf += ("<table border='1' align='center' width='100%'>");
        kopf += ("<tr>");
        kopf += ("<td rowspan=\"3\" width='150px'></td>");
        kopf += ("<td align='center'><h2>Multi Media Berufsbildende Schulen Hannover</h2></td>");
        kopf += ("<td colspan=\"2\" align='center'><b>Digitales Klassenbuch Fehlzeitenbericht</b></td>");
        kopf += ("</tr>");
        kopf += ("<tr>");
        kopf += ("<td  align='center' rowspan=\"2\"><h3>Klasse/ Kurs: " + klasse + "</h3></td>");
        kopf += ("<td  style=\"font-size: 11;\">Verantwortlicher: " + lehrerId + "</td>");
        kopf += ("<td  style=\"font-size: 11;\">geprft</td>");
        kopf += ("</tr>");
        kopf += ("<tr>");
        DateFormat df = new SimpleDateFormat("dd.MM.yyyy");
        Calendar c = df.getCalendar();
        c.setTimeInMillis(System.currentTimeMillis());
        String dat = c.get(Calendar.DAY_OF_MONTH) + "." + (c.get(Calendar.MONTH) + 1) + "."
                + c.get(Calendar.YEAR);
        kopf += ("<td  style=\"font-size: 11;\">Ausdruck am: " + dat + "</td>");
        kopf += ("<td  style=\"font-size: 11;\">Datum</td>");
        kopf += ("</tr>");
        kopf += ("</table>");
        kopf += ("<p>&nbsp;</p>");

        Document document = new Document();
        /* Basic PDF Creation inside servlet */
        PdfWriter writer = PdfWriter.getInstance(document, out);
        StringBuilder htmlString = new StringBuilder();
        htmlString.append(kopf);

        String body = "";
        body += "<table align='center' width='100%'>";
        body += "<tr><td><h3 align=\"center\">Empfnger:" + recipient + "</h3></td></tr>";
        Log.d("Content=" + StringUtil.addBR(content));
        body += "<tr><td style=\"font-size: 12;\">" + StringUtil.addBR(content) + "</td></tr>";
        body += "</table>";
        htmlString.append(body);

        document.open();
        // Dokument erzeugen
        InputStream is = new ByteArrayInputStream(htmlString.toString().getBytes());
        // Bild einfgen
        String url = "http://www.mmbbs.de/fileadmin/template/mmbbs/gfx/mmbbs_logo_druck.gif";
        Image image;
        try {
            image = Image.getInstance(url);
            image.setAbsolutePosition(45f, 720f);
            image.scalePercent(50f);
            if (image != null) {
                document.add(image);
            }
        } catch (BadElementException ex) {
            Logger.getLogger(MailServlet.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(MailServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
        XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
        document.close();
        out.close();
    } catch (IOException ex) {
        Logger.getLogger(MailServlet.class.getName()).log(Level.SEVERE, null, ex);
    } catch (DocumentException ex) {
        Logger.getLogger(MailServlet.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        try {
            if (out != null) {
                out.close();
            }
        } catch (IOException ex) {
            Logger.getLogger(MailServlet.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

From source file:EditorKits.DocumentExporter.java

public static void ConvertToPDF(String htmlString, String output) {

    String out = "";
    out = htmlString.substring(0, htmlString.indexOf("<body>")).replaceAll("<br>", "");
    out += htmlString.substring(htmlString.indexOf("<body>"), htmlString.indexOf("</body>"));
    out += htmlString.substring(htmlString.indexOf("</body>"), htmlString.length()).replaceAll("<br>", "");
    out = out.replaceAll("<br>", "<br/>");
    try {//from w w w . j  a  va  2  s  .  c  om
        Document document = new Document(PageSize.A4);
        PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(output));
        document.open();
        document.addCreationDate();

        XMLWorkerHelper worker = XMLWorkerHelper.getInstance();

        worker.parseXHtml(pdfWriter, document, new StringReader(out));
        document.close();
        System.out.println("Done.");
    } catch (FileNotFoundException | DocumentException e) {
    } catch (IOException ex) {
        Logger.getLogger(DocumentExporter.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:edu.chl.proton.control.MarkdownTabController.java

License:Open Source License

/**
 * Generates a PDF from the HTML String that getHTML() in IDocumentHandler returns.
 * @throws IOException if typecasting to WebView fails.
 * @throws DocumentException if the PDF cannot be created.
 *//*w ww.  j  a v  a2 s.  co  m*/
@FXML
public void onClickGeneratePDF() throws IOException, DocumentException {
    String path = file.getCurrentDirectory().getPath() + "/untitled.pdf";
    String title = "Output filepath";
    TextPrompt prompt = new TextPrompt(stage.getStage(), title, path);
    if ((path = prompt.getResult()) != null) {
        com.itextpdf.text.Document doc = new com.itextpdf.text.Document();
        PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(path));
        writer.setInitialLeading(12);
        doc.open();
        XMLWorkerHelper.getInstance().parseXHtml(writer, doc,
                new ByteArrayInputStream(document.getHTML().getBytes()));
        doc.close();
    }
}

From source file:it.digitalhumanities.dhcpublisher.DHCPublisher.java

private void convertFile(final File subDir) throws DocumentException, IOException {

    File[] htmlFiles = subDir.listFiles(new FilenameFilter() {

        @Override/*from  w ww . j  a  v a2  s .  co  m*/
        public boolean accept(File dir, String name) {
            return name.endsWith(".html");
        }
    });

    if (htmlFiles.length > 0) {
        File htmlFile = htmlFiles[0];
        String targetName = htmlFile.getName().substring(0, htmlFile.getName().length() - 4) + "pdf";

        Document document = new Document();
        File targetFile = new File(subDir, targetName);
        if (targetFile.exists()) {
            targetFile.delete();
        }

        try (FileOutputStream fos = new FileOutputStream(targetFile)) {
            PdfWriter writer = PdfWriter.getInstance(document, fos);
            writer.getAcroForm().setNeedAppearances(true);
            document.open();

            HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
            htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
            htmlContext.setImageProvider(new AbstractImageProvider() {
                public String getImageRootPath() {
                    return subDir.getAbsolutePath();
                }
            });

            CSSResolver cssResolver = XMLWorkerHelper.getInstance().getDefaultCssResolver(true);

            Pipeline<?> pipeline = new CssResolverPipeline(cssResolver,
                    new HtmlPipeline(htmlContext, new PdfWriterPipeline(document, writer)));

            XMLWorker worker = new XMLWorker(pipeline, true);
            XMLParser p = new XMLParser(worker);

            try (FileInputStream fis = new FileInputStream(htmlFile)) {
                p.parse(fis);
            } finally {
                document.close();
            }
        }
    } else {
        throw new IllegalArgumentException(subDir + " does not contain HTML files!");
    }
}

From source file:memoire.Exercises.java

public void CreatePdf44(ArrayList<String> list, String nameFile) {
    try {/*from   www.  j a  v a  2 s .  co m*/

        com.itextpdf.text.Document document = new com.itextpdf.text.Document(com.itextpdf.text.PageSize.A4);
        String fileNameWithPath = "Examen00" + nameFile + ".pdf";
        FileOutputStream fos = new FileOutputStream(fileNameWithPath);
        com.itextpdf.text.pdf.PdfWriter pdfWriter = com.itextpdf.text.pdf.PdfWriter.getInstance(document, fos);
        Rectangle rectangle = new Rectangle(30, 30, 550, 800);
        pdfWriter.setBoxSize("rectangle", rectangle);

        HeaderAndFooterPdfPageEventHelper headerAndFooter = new HeaderAndFooterPdfPageEventHelper();
        //pdfWriter.setPageEvent(headerAndFooter);
        document.open();
        com.itextpdf.text.html.simpleparser.HTMLWorker htmlWorker = new com.itextpdf.text.html.simpleparser.HTMLWorker(
                document);

        try {
            document.newPage();
            //Rectangle page = document.getPageSize();
            //PdfPTable head = new PdfPTable(1);
            //head.setHorizontalAlignment(10);
            // document.add(new Paragraph(Jsoup.parse(list.get(0)).text()));
            // headerAndFooter.onStartPage(pdfWriter, document,Jsoup.parse(list.get(0)).text());
            //System.out.println(list.get(0));
            for (int j = 0; j < NbrPartie + 1; j++) {

                // System.out.println(Jsoup.parse(list.get(j)).text());
                // htmlWorker.parse(new StringReader(list.get(j)));
                XMLWorkerHelper.getInstance().parseXHtml(pdfWriter, document, new FileInputStream(list.get(j)));

            }

            //head.setTotalWidth(page.getWidth() - document.leftMargin() - document.rightMargin());
            //float number=page.getHeight() - document.topMargin()+ head.getTotalHeight();
            //head.writeSelectedRows(0,(int)page.getWidth(), document.leftMargin(),page.getHeight() - document.topMargin()+ head.getTotalHeight(),pdfWriter.getDirectContent());
            //pdfWriter.getPageNumber();
            pdfWriter.flush();
            document.close();
            fos.close();
        } catch (Exception e) {
            System.out.println("nnn");
            JOptionPane.showMessageDialog(null, e.getMessage());
        }

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e.toString());
    }
}

From source file:net.duckling.ddl.web.controller.LynxDDocController.java

License:Apache License

@RequestMapping(params = "func=exportPdf")
public void exportPdf(HttpServletRequest request, HttpServletResponse response,
        @PathVariable("rid") Integer rid) {
    VWBContext context = VWBContext.createContext(request, UrlPatterns.T_PAGE, rid, LynxConstants.TYPE_PAGE);
    int tid = VWBContext.getCurrentTid();
    Team team = teamService.getTeamByID(tid);
    Resource r = resourceService.getResource(rid);
    response.setHeader("Content-disposition",
            Browser.encodeFileName(request.getHeader("USER-AGENT"), r.getTitle() + ".pdf"));
    response.setContentType("application/pdf");

    PageRender render = resourceOperateService.getPageRender(tid, rid);
    String html = renderingService.getHTML(context, render);
    StringBuffer buf = new StringBuffer();
    List<String> imagePathList = new ArrayList<String>();
    buf.append("<html><head><title>" + r.getTitle() + "</title>");
    buf.append("<link type=\"text/css\" rel=\"stylesheet\" href=\"" + context.getBaseURL()
            + "/jsp/aone/css/css.css\" />");
    buf.append("<style type=\"text/css\"> *{ font-family: simsun; } </style>");
    buf.append("</head>");
    buf.append("<body style=\"margin:0;\">");
    buf.append("<div id=\"DCT_viewcontent\">");
    html = processImagePath(html, team.getName(), imagePathList, request);
    buf.append(html);/*from w w w  .java2 s. co  m*/
    buf.append("</div>");
    buf.append("</body></html>");

    Document document = new Document();
    PdfWriter writer;
    try {
        String fontPath = getFontPath("simsun.ttf");
        XMLWorkerFontProvider fontImp = new XMLWorkerFontProvider(fontPath);
        fontImp.register(fontPath, "simsun");
        FontFactory.setFontImp(fontImp);

        writer = PdfWriter.getInstance(document, response.getOutputStream());
        document.open();
        InputStreamReader isr = new InputStreamReader(
                new ByteArrayInputStream(buf.toString().getBytes(LynxConstants.UTF8)), LynxConstants.UTF8);
        XMLWorkerHelper.getInstance().parseXHtml(writer, document, isr);
    } catch (DocumentException e) {
        LOG.error("export pdf error. {rid:" + r.getRid() + "} : " + e.getMessage());
    } catch (IOException e) {
        LOG.error("export pdf Error. {rid:" + r.getRid() + "} : " + e.getMessage());
    } finally {
        try {
            document.close();
        } catch (Exception e) {
            LOG.warn(e.getMessage());
        }
        ;
    }

    //
    for (String path : imagePathList) {
        FileUtil.deleteFile(path);
    }
}

From source file:org.gbif.ipt.task.Eml2Pdf.java

private static void parseHTML(Document doc, String html, PdfWriter pdf) throws IOException {
    InputStream is = new ByteArrayInputStream(html.getBytes());
    XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
    worker.parseXHtml(pdf, doc, is);//from  w w  w  . java2s . c o  m
    //worker.parseXHtml(pdf, doc, new StringReader(html));
}

From source file:org.jaqpot.core.service.data.ReportService.java

public void report2PDF(Report report, OutputStream os) {

    Document document = new Document();
    document.setPageSize(PageSize.A4);/*from   w  w  w  . j  a  va  2s . co m*/
    document.setMargins(50, 45, 80, 40);
    document.setMarginMirroring(false);

    try {
        PdfWriter writer = PdfWriter.getInstance(document, os);
        TableHeader event = new TableHeader();
        writer.setPageEvent(event);

    } catch (DocumentException ex) {
        throw new InternalServerErrorException(ex);
    }

    document.open();

    /** setup fonts for pdf */
    Font ffont = new Font(Font.FontFamily.UNDEFINED, 9, Font.ITALIC);
    Font chapterFont = FontFactory.getFont(FontFactory.HELVETICA, 16, Font.BOLDITALIC);
    Font paragraphFontBold = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD);
    Font paragraphFont = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.NORMAL);
    Font tableFont = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.BOLD);

    /** print link to jaqpot*/
    Chunk chunk = new Chunk(
            "This report has been automatically created by the JaqpotQuatro report service. Click here to navigate to our official webpage",
            ffont);
    chunk.setAnchor("http://www.jaqpot.org");

    Paragraph paragraph = new Paragraph(chunk);
    paragraph.add(Chunk.NEWLINE);

    Chapter chapter = new Chapter(paragraph, 1);
    chapter.setNumberDepth(0);

    /** get title */
    String title = null;
    if (report.getMeta() != null && report.getMeta().getTitles() != null
            && !report.getMeta().getTitles().isEmpty())
        title = report.getMeta().getTitles().iterator().next();

    /** print title aligned centered in page */
    if (title == null)
        title = "Report";
    chunk = new Chunk(title, chapterFont);
    paragraph = new Paragraph(chunk);
    paragraph.setAlignment(Element.ALIGN_CENTER);
    paragraph.add(Chunk.NEWLINE);
    paragraph.add(Chunk.NEWLINE);

    chapter.add(paragraph);

    /** report Description */
    if (report.getMeta() != null && report.getMeta().getDescriptions() != null
            && !report.getMeta().getDescriptions().isEmpty()
            && !report.getMeta().getDescriptions().toString().equalsIgnoreCase("null")) {
        paragraph = new Paragraph();
        paragraph.add(new Chunk("Description: ", paragraphFontBold));
        paragraph.add(new Chunk(report.getMeta().getDescriptions().toString().replaceAll(":http", ": http"),
                paragraphFont));
        chapter.add(paragraph);
        chapter.add(Chunk.NEWLINE);
    }

    /** report model, algorithm and/or dataset id */
    if (report.getMeta() != null && report.getMeta().getHasSources() != null
            && !report.getMeta().getHasSources().isEmpty() && !report.getMeta().getDescriptions().isEmpty()
            && !report.getMeta().getDescriptions().toString().equalsIgnoreCase("null")) {
        Iterator<String> sources = report.getMeta().getHasSources().iterator();
        sources.forEachRemaining(o -> {
            if (o != null) {
                String[] source = o.split("/");
                if (source[source.length - 2].trim().equals("model")
                        || source[source.length - 2].trim().equals("algorithm")
                        || source[source.length - 2].trim().equals("dataset")) {
                    Paragraph paragraph1 = new Paragraph();
                    paragraph1.add(new Chunk(source[source.length - 2].substring(0, 1).toUpperCase()
                            + source[source.length - 2].substring(1) + ": ", paragraphFontBold));
                    paragraph1.add(new Chunk(source[source.length - 1], paragraphFont));
                    chapter.add(paragraph1);
                    chapter.add(Chunk.NEWLINE);
                }
            }
        });
    }

    /** report single calculations */
    report.getSingleCalculations().forEach((key, value) -> {
        Paragraph paragraph1 = new Paragraph();
        paragraph1 = new Paragraph();
        paragraph1.add(new Chunk(key + ": ", paragraphFontBold));
        paragraph1.add(new Chunk(value.toString().trim().replaceAll(" +", " "), paragraphFont));
        chapter.add(paragraph1);
        chapter.add(Chunk.NEWLINE);
    });

    /** report date of completion */
    if (report.getMeta() != null && report.getMeta().getDate() != null) {
        Paragraph paragraph1 = new Paragraph();
        paragraph1.add(new Chunk("Procedure completed on: ", paragraphFontBold));
        paragraph1.add(new Chunk(report.getMeta().getDate().toString(), paragraphFont));
        chapter.add(paragraph1);
        chapter.add(Chunk.NEWLINE);
    }

    try {
        document.add(chapter);
    } catch (DocumentException ex) {
        throw new InternalServerErrorException(ex);
    }

    Integer chapterNumber = 0;

    /** report all_data */
    for (Entry<String, ArrayCalculation> entry : report.getArrayCalculations().entrySet()) {
        String label = entry.getKey();
        ArrayCalculation ac = entry.getValue();
        PdfPTable table = new PdfPTable(ac.getColNames().size() + 1);
        for (Entry<String, List<Object>> row : ac.getValues().entrySet()) {

            try {
                XMLWorkerHelper.getInstance().parseXHtml(w -> {
                    if (w instanceof WritableElement) {
                        List<Element> elements = ((WritableElement) w).elements();
                        for (Element element : elements) {
                            PdfPCell pdfCell = new PdfPCell();
                            pdfCell.addElement(element);
                            table.addCell(pdfCell);
                        }
                    }
                }, new StringReader(row.getKey()));
            } catch (IOException e) {
                e.printStackTrace();
            }

            for (Object o : row.getValue()) {
                table.addCell(o.toString());
            }
            table.completeRow();
        }
        try {
            Chunk tableChunk = new Chunk(label, tableFont);
            Chapter tableChapter = new Chapter(new Paragraph(tableChunk), ++chapterNumber);
            tableChapter.add(Chunk.NEWLINE);
            tableChapter.add(table);
            document.newPage();
            document.add(tableChapter);
        } catch (DocumentException ex) {
            throw new InternalServerErrorException(ex);
        }
    }

    /** report plots */
    for (Entry<String, String> entry : report.getFigures().entrySet()) {
        try {
            byte[] valueDecoded = Base64.decodeBase64(entry.getValue());
            Image l = Image.getInstance(valueDecoded);
            document.newPage();
            //image starts at the half's half of pdf page
            l.setAbsolutePosition(0, (document.getPageSize().getHeight() / 2 / 2));
            l.scaleToFit(document.getPageSize());

            Chunk tableChunk = new Chunk(entry.getKey(), tableFont);
            Chapter tableChapter = new Chapter(new Paragraph(tableChunk), ++chapterNumber);
            tableChapter.add(l);
            document.add(tableChapter);
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
        }
    }
    document.close();
}